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 文件里声明方法和传入传出参数才能具体执行,但优点显然就是通过这种方法我们可以实现非常多复杂的功能。这是我的第一个区块链应用,如有错误欢迎指正,谢谢。