以太坊开发入门5

Truffle和Embark

一旦你开始写智能合约,你会重复做大量的操作,比如编译源码为字节码和abi,部署到网络,测试然后部署合约等等。你也许希望更关注于你想要实现的东西。

Truffle和Embark框架,标准化和自动化了这些琐碎的工作。它们提供了一个好的开发,部署,以及更为重要的,测试智能合约的体验。

你可以查看这个文章(http://truffleframework.com/docs/getting_started)来开启使用Truffle的旅程。

这篇文章,提供了使用Truffle来部署以及与智能合约交互的文章(https://blog.zeppelin.solutions/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05)。

Embark(https://github.com/iurimatias/embark-framework)提供了类似的,帮助开发者组织工程的稍有些不同的工具。

当你一开始接触智能合约这块时,应该尽量不要使用框架。直到你明白了使用框架能带来的价值时,才应该开始使用,正如你不应该通过rails new来学习HTML语言一样。

ETHPM

分享是关心,所以ETHPM是一个去中心化的智能合约包管理资源库(https://www.ethpm.com/registry)。使用ETHPM,你可以关联或连接到某个著名的合约或库,减少代码重复,尽可能理想的为未来的开发提供好的基础。

这里的这个规范(https://github.com/ethereum/EIPs/issues/190),详细的说明了相关的信息以及背景。Truffle和Embark均可与之集成,并创造一个愉快的开发体验。

网络

Mainnet-以太坊主网,通常是所有客户端的默认网络。

Ropsten - 以太坊使用工作量证明的主测试网络。这个网络,因为低的计算量,容易遭到DDOS攻击,分片,或者其它问题。垃圾邮件攻击后被暂时放弃,最近才恢复使用。(https://github.com/ethereum/ropsten)

Kovan-parity客户端组成的测试网络,使用授权证明来提升对垃圾邮件攻击的抗扰度,并且持续4秒的阻塞时间。(https://github.com/kovan-testnet/proposal)

Rinkeby-geth客户端组成的测试网络,使用集团共识,尽管计算量低,但是对恶意行为者更有弹性。(https://www.rinkeby.io/)

你可以自己搭建你自己的测试网络,也许使用kubernetes(https://github.com/MaximilianMeister/kuberneteth)或者docker-compose(https://capgemini.github.io/blockchain/ethereum-docker-compose/),但也许你将很快就可以不需要花什么时间。

帐户与钱包

一个以太坊帐户就是一个私钥和公钥地址对。它们可以用来存储ether,创建时不需要花费gas。

钱包则是用来管理ether的智能合约(一些代码)。这里是使用solidity写的一个钱包,运行于Mist浏览器(https://github.com/ethereum/meteor-dapp-wallet/blob/develop/Wallet.sol)。他们可以有许多的特性,比如多用户签名,纸?等等。

这样,我们就正确的定义了两个名词,前面看到其它人对这两个术语的困惑,并把所有能存ether的都叫作Wallet。

EVM以及智能合约创建的状态

在每个全节点网络上运行的智能合约代码在EVM内执行。这是您的标准虚拟机,执行一些字节码,除了这个vm与网络,文件系统,进程等隔离。没有人想要编写字节码,所以我们有一些更高级别的语言编译为EVM字节码。