之前对以太坊了解甚少,只知道它是公有链的代表,而且谣传没有联盟链效率高,通过近期的接触发现里边还是有很多联盟链学习的地方。比如社区的活跃程度,搭建和部署的方便性等,至于性能关键还是看你怎么样的业务场景了吧!
先把最近了解的内容说下吧,基于区块链的特性,去中心化和不可篡改,我们一般会通过智能合约把业务内容提交到链上。然后网络节点会把整个合约数据同步到共识节点上,再后来节点也可以查询合约的数据。
那么首先我们看下怎么写以太坊的智能合约:
- 开发语言和开发工具
- 一般使用solidity 写合约 (https://solidity.readthedocs.io/en/v0.4.24/index.html)目前版本是0.4.24, 里边语法可以了解下,还是有很多有意思的地方,比如数据类型和字符长度等都有比较严格的要求,因为要在网路节点间传输,在保证安全的情况下,尽量节省传输量。
- 开发IDE , Remix, 这个编辑器是我见过最好的网络编辑器,使用很方便,不仅有在线版的,也可以装本地版的,可以直接部署智能合约。
- 在线IDE http://remix.ethereum.org/
- 本地安装:https://github.com/ethereum/remix-ide 安装也很方便
- 如何写一个智能合约
- 创建一个类,类似java的类,有构造函数,有set get 方法,有变量,有结构体,有mapping,有代码语法检查,有event
- 通过public 关键字把合约的接口暴露出来给外部调用,接口参数也有相应的要求,如果参数类型不匹配是调不到合约内容的
- 把写好的类,运行在不同EVM上,然后就可以通过以太坊提供的api来调用合约了。
其次,看下以太坊通过的API调用智能合约
- web3.js是以太坊提供的调用智能合约的api (https://github.com/ethereum/wiki/wiki/JavaScript-API#web3-javascript-app-api-for-02xx)
- 查看这个文档,你会发现里边这个基本都是围绕着合约和交易进行的运算,有账号,有网络,有钱包,有合约,有字符转换,有区块等,这样可以理解下,你可以在某一特定的网络下,通过合约和钱包,从一个账户给另一个账户转账或交易,中间需要花费一定的算力,系统会把这个交易放到一个区块上,并同步给其他节点做验证。
- 至于具体的业务和如何调用web3的方法,请参看之后的文章。
时间有限,先写到这里,如有需要和交流请留言
沟通交流合作请加微信!