以太坊智能合约开发二三事

in #cn7 years ago (edited)

接触区块链快两年了,整天听人谈论以太坊智能合约,自己却从来没有手把手写过。

一个重要原因就是,当年以太坊的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了,牺牲一些去中心化,在区块链上自由的开发符合当地法律的应用,有何不好呢?

毕竟”去中心化“只是手段,不是目的,而且人于人的差异之大,绝对的去中心就是伪命题吧

Sort:  

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.