aelf是一个多链条结构,每个Dapps应用和智能合约使用自己的链条,当很多应用同时进行时,大家都不需要共享资源。同时也是因为有自己的侧链,你可以做很多自定义化,甚至不同的链条使用不同的共识机制,POS、POW、PBFT你想怎么玩就怎么玩。 在自治管理这一块儿,主链条使用DPOS共识机制,所有代币持有者可以投票选择委任代表。对于重大系统更新,社区可以投票改进,这也避免了以后系统分叉的问题。总结下来,aelf就是一个开放式的OS生态环境。
面对现有区块链系统的问题,AELF提出以下解决方案:
为了实现上述目标,ELF的技术构架有以下几个方面:
接下来说重点
aelf团队近日在其公众号上举办了体验 aelf hello world 程序,分享2W美金ELF,鄙人有幸参与到此项活动中,接下来给大家讲一讲本人踩过的坑和经验总结:
本人并没有C#开发经验,所以参考了一位大神写的教程:简书链接
这位大神写的非常详细,但就是这样的情况下我还是踩到了不少的坑。
首先配环境之类的过程就不详细说了,这一步没什么难度主要注意Vscode的报错问题还有Vscode在win10下有时候会有UAC权限问题,所以推荐大家使用管理员权限打开cmder或者powershell进行编译和运行。
首先编译并启动整个链,然后方法和变量名必须先在proto后缀的文件里面声明一遍,类似这样:
service HelloWorldContract {
option (aelf.csharp_state) = "HelloWorldContractState";
rpc Hello (google.protobuf.Empty) returns (HelloReturn) { }
}
message HelloReturn {
string Value = 1;
}
rpc就是声明Hello方法的表达,接下来我们要找到HelloWorldContract.cs文件,这是c#的专用格式,里面可以实现方法并抛出结果,具体代码如下:
using Google.Protobuf.WellKnownTypes;
namespace HelloWorldContract
{
public partial class HelloWorldContract : HelloWorldContractContainer.HelloWorldContractBase
{
public override HelloReturn Hello(Empty input)
{
return new HelloReturn {Value = "Hello world!"};
}
}
}
就这样,一个简单的aelf应用就写好了,接下来我们可以通过修改.proto和.cs 文件来实现各种各样的功能。
想要检查运行结果需要在js里面写然后通过浏览器查看具体结果,这里不做过多解释。
需要注意的是这种应用的C#方法和其他语言有所区别 首先需要在proto文件里声明方法和传入传出参数才能具体执行,但优点显然就是通过这种方法我们可以实现非常多复杂的功能。这是我的第一个区块链应用,如有错误欢迎指正,谢谢。