go语言挖矿 gos挖矿( 六 )


区块链技术概念3
区块链: 区块链就像是一个全球唯一的帐簿,或者说是数据库,记录了网络中所有交易历史 。
以太坊虚拟机(EVM): 它让你能在以太坊上写出更强大的程序比特币上也可以写脚本程序、 。它有时也用来指以太坊区块链,负责执行智能合约以及一切 。
节点:你可以运行节点 , 通过它读写以太坊区块链,也即使用以太坊虚拟机 。完全节点需要下载整个区块链 。轻节点仍在开发中 。
矿工:挖矿,也就是处理区块链上的区块的节点 。这个网页可以看到当前活跃的一部分以太坊矿工:stats.ethdev.com 。
工作量证明:矿工们总是在竞争解决一些数学问题 。第一个解出答案的(算出下一个区块)将获得以太币作为奖励 。然后所有节点都更新自己的区块链 。所有想要算出下一个区块的矿工都有与其他节点保持同步,并且维护同一个区块链的动力 , 因此整个网络总是能达成共识 。(注意:以太坊正计划转向没有矿工的权益证明系统(POS),不过那不在本文讨论范围之内 。)
以太币:缩写ETH 。一种你可以购买和使用的真正的数字货币 。这里是可以交易以太币的其中一家交易所的走势图 。在写这篇文章的时候,1个以太币价值65美分 。
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开发的流程,因此这块就不多说了 。但是我们应该记住这些命令行工具是调试,配置节点,以及使用钱包的利器 。

推荐阅读