• app_navCreated with Sketch.app_navCreated with Sketch.

    App

    扫码下载APP

  • tougao_navCreated with Sketch.tougao_navCreated with Sketch.

    投稿

  • Sign in_navCreated with Sketch.Sign in_navCreated with Sketch.

    登录

  • register_navCreated with Sketch.register_navCreated with Sketch.

    注册

蚂蚁S9 13.5T 云算力
WECC世界杯活动
BTM云算力
以太坊私有链智能合约如何部署?原理和机制是什么?
2018-04-23 10:17:47

经常听到很多追随区块链的朋友提到智能合约,那么智能合约是什么?它跟以太坊又有什么关系呢?


互联网发展至今,有人认为有能力独立开发出区块链应用的地球人不会超过2000个人,也有人认为可能不超过200个人。这个数字虽然或许夸张,但足以说明开发区块链难度之大。因为这就如同在没有操作系统的手机上开发出一款APP,需要从底层编写代码,构筑底层构架,更需要掌握非常多的软硬件开发能力和加密算法。So,有人设想,如果有人提供类似于安卓或者iOS这样的操作系统,即可让开发的门槛大大降低。于是,有群程序员开发了Ethereum,中文名: “以太坊”。

以太坊是一个开源的区块链底层系统,就像安卓一样,提供了非常丰富的API和接口,让许多人在上面能够快速开发出各种区块链应用。目前已经有超过200多个应用在以太坊上开发。


以太坊私有链智能合约原理和机制


而以太坊很大的特色就是能够实现智能合约。所谓智能合约(Smart Contract),是密码学家Nick Szabo在1994年首次提出以数字形式定义的一系列承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。


智能合约的智能在英语中对应的单词是Smart,和智能手机(Smart Phone)中的Smart意义相同,表示非常灵活的意思,并不是指人工智能(AI)。智能合约一旦设立指定后,能够无需中介的参与自动执行,并且没有人可以阻止它的运行。

区块链为智能合约提供可信执行环境,智能合约为区块链扩展应用。而在以太坊上的智能合约,能够控制区块链上各种数字资产进行复杂的操作,随着智能合约开始获得越来越多的使用,人们也发现,就像现实世界的合同一样,如果没有认真审核的话,其中就有可能出现漏洞,并且被坏人利用。而TheDAO项目所出现的一系列巨大问题让更多人开始重视智能合约的安全性。

TheDAO是一个基于以太坊的去中心化自治基金,每个人都可以随时使用以太币参与,没有任何中心化的管理机构,由集体决策进行投资各类区块链项目。由于该项目在28天内筹集超过1.5亿美元,成为全球最大的众筹项目而备受关注。但是由于TheDAO的程序出现漏洞,被黑客窃取了部分资金,使得很多人对智能合约的安全性,甚至是以太坊的安全性开始产生疑问。

事实上,随着事件的发展,大家开始认识到是DAO的智能合约编写出现了漏洞,而不是以太坊的问题。这次事件让所有人认识到智能合约也像传统的合同一样,如果合同的内容和执行流程过于复杂,也需要有律师这样的角色介入审查。而一旦存在漏洞没有被审查发现并被黑客利用,则可能引起糟糕的结果。就像我们可能永远没办法确保所有合同都没有漏洞一样,但不可能由此认为合同方式是没有用处的。智能合约也是如此,只不过在未来也许需要一群专业的人来审计代码。你明白了吗?

以太坊私有链智能合约如何部署?


安装
安装钱包和GETH

准备创世块文件
如下: { "config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x40000", "extraData" : "", "gasLimit" : "0xffffffff", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00", "alloc": { } }保存为piccgenesis.json

启动
命令行输入geth --datadir "d:\ly\qkl\testnetwork" init d:\ly\qkl\piccgenesis.json 其中datadir指定一个位置用于存放运行的数据, init后边填写配置文件的路径。 如果成功的话会输出Successfully wrote genesis state字样

启动网络
geth --identity "lingyun_eth_dev" --rpc --rpccorsdomain "*" --datadir "d:\ly\qkl\testnetwork" --port "30303" --rpcapi "db,eth,net,web3" --networkid 95518 console

当看到Listening on [::]:30303和Welcome to the Geth JavaScript console!的提示,说明已经启动成功

使用节点创建账号
启动节点成功后,会进入Geth的命令行模式,输入如下命令 personal.newAccount()系统会提示你输入账号密码,并确认,最后会显示一个新生成的账号。

启动Windows下私有链图形节点
首先按上面的步骤启动Geth并创建了账号,然后解压缩Ethereum-Wallet,运行Ethereum-Wallet.exe,即启动成功,如果区块链正常的话,会在右上角显示“PRIVATE-NET”,点击“LAUNCH APPLICATION”进入图形界面即可。

挖矿获取一些以太币
账号创建后,还没有以太币,需要在私有链上挖矿,切换到Geth界面,输入 miner.start(1)

创建新Token
有了ETH接下来就可以新建智能合约了,也就是自己的代币Token。