动手写第一个fabric智能合约

作者: 钟晓宏 | 来源:发表于2017-05-30 12:21 被阅读0次

    感谢higer给我们上了精彩的一课,带我们入门fabric智能合约。

    就像笑来老师说的,学会最少必要知识后,就要马上行动,马上用起来。现在higer已经教把最少必要知识教给了我,不行动说不过去。

    说来遗憾,5月26日那天正好发烧,没办法听higer的直播,直到今天才回听。

    废话就不多说了,直接上作业吧!

    一、登陆IBM Blockchain

    网址:https://crl.ptopenlab.com:8800/bc/#home

    如果没有账号的话,需要注册1个账号,IBM会发送验证邮件到你的邮箱,在邮箱激活后,点击下图红色方框,即可进入开发界面:

    二、正式开发

    1、新建一条区块链

    点击“Apply a New Chain”,新建一条区块链,共识算法选择为“pbft”

    2、新建一个智能合约

    选择“chaincode_example02”,点击旁边打勾的标志,即可弹出下图。初始化参数设置好了之后,点击"Deploy"。

    这里务必注意,init函数数只能接受4个参数,也就是2个人的名字以及初始“余额”。

    3、写账本

    第2步部署后,就会弹出以下的界面:

    下图显示的正是我们新建区块链时设置的节点数,即4个验证节点。

    由于区块创建需要时间,所以现在暂时只有创世区块(区块0)

    稍等片刻,部署区块(区块1)就出现了

    接下来是higer给zhongxh转账5000,点击右下角的“invoke”,就可以看到下面的界面。

    “Function”我们选择"tranfer",在这个场景是转账的意思

    “Arguments”表明:higer向zhongxh转账5000

    这一次,我们很快就看到invoke区块(区块2),看到invoke区块生成了,我们也就可以查询了

    点击右下角的“Query”,就可以看到如下的界面。

    “Function”我们选择"query",在这个场景是转账的意思

    “Arguments”表明:查询higer的余额

    点击“Query”按钮后,就会显示higer的余额

    higer账户的余额由10000变成5000,可见钱已经从higer的账户里面转出

    那我们现在还不是很放心,钱到了zhongxh的账户了吗?

    那我们查查zhongxh账户的余额吧!

    和上面查询higer的账户余额一模一样,只是“Argument”换成了["zhongxh"]而已 zhongxh账户的余额由500变成5500,可见higer账户转出的钱已经到账

    到这里,higer向zhongxh转账成功了。

    那我们接下来可能会问:新建智能合约的时候只能init两个账户,如果我还想要init更多的账户怎么办?

    答案是多deploy几个智能合约。

    点击下图右下角的“Deploy”,即可新建智能合约。

    “Smart Contract”我们仍然选择"chaincode_example02"

    “Instance Name”为"instance2"

    "Arguments"为"["Alice","10000","Bob","50000"]",表明Alice账户拥有10000,Bob的账户拥有5000

    请注意,这里的Arguments不能再出现"higer"和“zhongxh”,否则会与instance1冲突

    新建智能合约后,就会有Deploy区块(区块3)产生

    现在我们可以查询Alice和Bob的账户余额:

    Bob的账户余额是50000,表明初始化成功 Alice的账户余额是10000,表明初始化成功

    假设Alice在Bob的咖啡厅买了一杯咖啡,支付了500

    Alice向Bob转了500 一个新的invoke的区块(区块4)产生了 查询Alice账户的余额 Alice账户的余额由原来的10000变成9500,表明钱已经转出去了 查询Bob账户的余额 Bob账户的余额由原来的50000变成5000,表明钱已经收到了

    从上面的图,可以得知,Alice支付给Bob的咖啡钱已经到账。

    本次作业到此结束,写得不好的地方,请不吝指教,谢谢!

    相关文章

      网友评论

        本文标题:动手写第一个fabric智能合约

        本文链接:https://www.haomeiwen.com/subject/hfqrfxtx.html