接触区块链快两年了,整天听人谈论以太坊智能合约,自己却从来没有手把手写过。
一个重要原因就是,当年以太坊的The DAO事件发生后的分叉,让我对ETH产生了"偏见"...
不过最近参加了一个以太坊智能合约开发的课程,改变一些对以太坊的看法,开始正视其在区块链发展史中的地位。
这篇文章用来简要记录一下智能合约开发感受,理解不对的地方,更希望有人来打脸..
0X01 智能合约介绍
智能合约,听起来很“高大上”的一个词,其实就是一个运行在区块链上的程序。
区块链是一个可公开访问且不可篡改的数据库,增删改查这个数据库的代码就是智能合约。
传统程序员理解上面这句话后,基本就可以无缝转型成“区块链软件工程师”了,哈哈。
0X02 以太坊开发工具
以太坊作为目前发展最好的公链,其实软件开发生态也十分强大。
1.开发语言: Solidity
Solidity 是一个编译型语言,类似于Java,编译生成的代码需要在以太坊虚拟机(EVM:类似于Java的JVM)运行。
这门语言是为了以太坊开发定制的,发展时间比较短,所以坑也很多。。
不过语法比较简单,和Python一样易上手,贴一段代码感受一下,很容易理解吧。
pragma solidity ^0.4.0;
contract SimpleStorage {
uint storedData;
function set(uint x) public {
storedData = x;
}
function get() public constant returns (uint) {
return storedData;
}
}
2.在线IDE: Remix
平时调试一些简单的合约,使用Remix就足够了,它提供了语法检查,错误提示,多种编译器,Debug模块,以太坊模拟器等等好用的功能。不过有时在线加载容易出问题,但它是基于JS编写并开源的,可以在本地直接安装。
3.开发框架: truffle
Truffle的出现可以说极大的简化了以太坊应用的开发,看看这些强大的功能
- Built-in smart contract compilation, linking, deployment and binary management.
- Automated contract testing with Mocha and Chai.
- Configurable build pipeline with support for custom build processes.
- Scriptable deployment & migrations framework.
- Network management for deploying to many public & private networks.
- Interactive console for direct contract communication.
- Instant rebuilding of assets during development.
- External script runner that executes scripts within a Truffle environment.
我尤其喜欢 truffle unbox react
这个命令,直接生产一套前后端开发脚手架,可以直接往里边填充solidity和react的代码。
4.Web3.js
虽然Truffle中已经内置了Web3.js,但还是要重点提一下,因为它有点像steem-js,但相比之下,比steem-js更强大,通过web3.js,可以编译,发布,调用sodility,是以太坊开发的绝对利器。
...还有一些工具比较,还在学习之中,以后再单独补充
0X03 智能合约的未来
说实话,现在除了ICO,智能合约并没有其他广泛的实际应用,我个人觉得是和”手续费“这个东西有极大的关系。
现代程序员,如果在编写代码时,还要考虑怎么编写才能省钱(对,solidity就是这样的),这绝对是反人性的...
长期会导致对程序员的要求过高,无法大规模,合作开发应用。
这里我要奶一下EOS了,牺牲一些去中心化,在区块链上自由的开发符合当地法律的应用,有何不好呢?
毕竟”去中心化“只是手段,不是目的,而且人于人的差异之大,绝对的去中心就是伪命题吧
Well done.
Eos白皮书 说,以太坊上Dapp可以方便转移到eos 上去。
本质上都一样的,我比较了一下eos和eth的 currency 合约,很相似的
从淘宝的服务器集群 到 eos21个节点。已经是划时代的进步了。
代码时代已经悄悄来临,我们的认知要跟上。
Interesting post
中午来了你黑没更新呢,沙发又被抢了
哈哈,谢谢支持
学习了,虽然还没有很明白。是不是可以这样理解,它的最终结果都会导向----去中心化,呢?
可能就是多中心吧.
最近也在看以太坊的资料,你整理的资料是个非常好的补充,多谢了
了解一下还挺有意思的,至少能不被忽悠..
搞吧,看好你
你也是EOS的支持者,技术方面的确不太懂,但从其价值定位、发行周期和团队还是非常有信心的,特别是一年的发行周期,经历的瀑布般的潮起潮落,足以打败所有目前各个区块链品种。
我应该算比较早期的支持者了..
跟帖中。今天来了,没看到你更新。遗憾而归。晚上再来
别这样,我很久才更新一篇的。。时间不够..
Hi @skenan! I was wondering today when will your witness server be back up?
Hi @jerrybanfield, thanks for your checking! I made it back up last night and is waiting for the next block.
I found this problem yesterday and my docker was stopped for no reason.
I am installing some monitor tool, hope it will not happen next time.