以太坊客户端go语言 以太坊 语言( 四 )


Gas:在以太坊上执行程序以及保存数据都要消耗一定量的以太币,Gas是以太币转换而成 。这个机制用来保证效率 。
DApp: 以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App) 。DApp的目标是(或者应该是)让你的智能合约有一个友好的界面,外加一些额外的东西 , 例如IPFS可以存储和读取数据的去中心化网络,不是出自以太坊团队但有类似的精神) 。DApp可以跑在一台能与以太坊节点交互的中心化服务器上,也可以跑在任意一个以太坊平等节点上 。(花一分钟思考一下:与一般的网站不同 , DApp不能跑在普通的服务器上 。他们需要提交交易到区块链并且从区块链而不是中心化数据库读取重要数据 。相对于典型的用户登录系统,用户有可能被表示成一个钱包地址而其它用户数据保存在本地 。许多事情都会与目前的web应用有不同架构 。)
以太坊客户端,智能合约语言
编写和部署智能合约并不要求你运行一个以太坊节点 。下面有列出基于浏览器的IDE和API 。但如果是为了学习的话 , 还是应该运行一个以太坊节点,以便理解其中的基本组件,何况运行节点也不难 。
运行以太坊节点可用的客户端
以太坊有许多不同语言的客户端实现即多种与以太坊网络交互的方法、,包括C++, Go, Python, Java, Haskell等等 。为什么需要这么多实现?不同的实现能满足不同的需求例如Haskell实现的目标是可以被数学验证、,能使以太坊更加安全,能丰富整个生态系统 。
在写作本文时,我使用的是Go语言实现的客户端geth (go-ethereum),其他时候还会使用一个叫testrpc的工具, 它使用了Python客户端pyethereum 。后面的例子会用到这些工具 。
关于挖矿:挖矿很有趣,有点像精心照料你的室内盆栽,同时又是一种了解整个系统的方法 。虽然以太币现在的价格可能连电费都补不齐,但以后谁知道呢 。人们正在创造许多酷酷的DApp, 可能会让以太坊越来越流行 。
交互式控制台:客户端运行起来后 , 你就可以同步区块链,建立钱包,收发以太币了 。使用geth的一种方式是通过Javascript控制台 。此外还可以使用类似cURL的命令通过JSON RPC来与客户端交互 。本文的目标是带大家过一边DApp开发的流程,因此这块就不多说了 。但是我们应该记住这些命令行工具是调试,配置节点,以及使用钱包的利器 。
在测试网络运行节点: 如果你在正式网络运行geth客户端,下载整个区块链与网络同步会需要相当时间 。你可以通过比较节点日志中打印的最后一个块号和stats.ethdev.com上列出的最新块来确定是否已经同步 。) 另一个问题是在正式网络上跑智能合约需要实实在在的以太币 。在测试网络上运行节点的话就没有这个问题 。此时也不需要同步整个区块链 , 创建一个自己的私有链就勾了,对于开发来说更省时间 。
Testrpc:用geth可以创建一个测试网络 , 另一种更快的创建测试网络的方法是使用testrpc. Testrpc可以在启动时帮你创建一堆存有资金的测试账户 。它的运行速度也更快因此更适合开发和测试 。你可以从testrpc起步,然后随着合约慢慢成型,转移到geth创建的测试网络上 - 启动方法很简单,只需要指定一个networkid:geth --networkid "12345" 。这里是testrpc的代码仓库,下文我们还会再讲到它 。
接下来我们来谈谈可用的编程语言,之后就可以开始真正的编程了 。写智能合约用的编程语言用Solidity就好 。
要写智能合约有好几种语言可?。河械憷嗨艼avascript的Solidity, 文件扩展名是.sol. 和Python接近的Serpent, 文件名以.se结尾 。还有类似Lisp的LLL 。Serpent曾经流行过一段时间,但现在最流行而且最稳定的要算是Solidity了,因此用Solidity就好 。听说你喜欢Python? 用Solidity 。

推荐阅读