truffle interacting with your contracts(Truffle之合约交互)

Roger
Roger 热门 2018-05-15 11:27
8 8598
<p> 介绍  
如果你自己编写原生以太坊网络请求去实现合约交互, 那么,很快你会意识编写这样的请求是繁重与不便的,同样,你会发现管理你创建请求的每个状态是很复杂的.幸运的是, Truffle帮你解决了这些麻烦,使得编写合约交互程序轻便简单.
<p> 读写数据
在太坊网络中,数据写入网络与数据读出网络是有区别的, 这种区别在你编写程序时,影响较大,写数据操作叫作transaction ,然而读取数据叫做call. Transactions处理方式很不同,特征如下.
<p><b> <b>TRANSACTIONS<b>交易
交易本质上会改变网络的状态.交易可以像发送Ether到另一个账户一样简单,也可以像执行合约函数或添加新合约到网络节点中一样复杂.交易的本质定义是它写入(或者改变)数据.交易需要花费Ether以运行, 俗称"gas", 而且执行交易也需要时间.当你通过交易执行合约函数时, 你不可以接受到函数的返回值,因为交易并不会马上执行完. 一般来说, 通过交易执行的函数不返回值; 而是返回一个交易号. 所以总的来说, 交易特性如下:
<p><b> <b>CALLS<b>调<b>用
另一方面, Calls是非常不同的. Calls可以执行网络上的代码, 不会有数据被永久修改. Calls是免费运行的,本质特性是读取数据. 如果你通过call执行一个合约函数,会立马得到返回值,总的来说,calls特性如下:
如何选择transaction还是call取决于你是想读数据,还是写数据.
<p> 抽象介绍
合约抽象是Javascript式合约交互的根本,简单的说,合约抽象是一种代码封装,使得合约交互更加简单,这样你不用太关注底层的引擎和传动装置.Truffle通过 truffle-contract 组件实现自有的合约抽象,就像下面描述的合约抽象.
为了感谢合约抽象的有益作用, 不管怎样, 首先我们需要一份合约来进行讲义。我们用可用的MetaCoin合约来向您讲述,Truffle Boxes 命令行如truffle unbox metacoin.
除了构造函数,这份合约有三个方法(sendCoin, getBalanceInEth, 和getBalance). 所有的这三个方法即可以被当作transaction执行,也可以被当作call执行。
现在我们来看看Truffle为我们提供的,俗称MetaCoin的Javascript对象,在Truffle console中可有效执行
请注意,抽象化包括了合约内完全相同的函数.同样包括了一个指向已部署的MetaCoin合约的地址.
<p> 执行合约函数
通过abstraction你可以在以太坊网络上很容易地执行合约函数.
<p><b> <b>发<b>起一笔交易TRANSACTIONS
在MetaCoin有三个可以执行的函数. 如果分析其中的一个函数, 会发现只有sendCoin方法会修改网络数据. sendCoin的目的是从一个账户发送Meta coins到另一个账户,而这些操作将会被持久化.
当调用sendCoin, 我们把它当成交易执行. 在下面的例子中, 我们从一个账户发送10 个Meta coin到另一个账户, 作为网络持久化的一种方式:
以上代码有一些有趣的地方:
<p><b> <b>发<b>起一个<b>调<b>用CALL
继续MetaCoin这个例子, 注意函数getBalance对于网络数据读取是一个经常性操作. 不会引起数据修改, 仅仅是返回指定该地址上的MetaCoin 余额. 我们接下来试一下:
这里有意思的是:
8条回应 最新 最早
谮漾窦蒿
沙发# 谮漾窦蒿 2018-05-15 11:27
目前,虚拟币交易平台的发现已出于飞速发展阶段。虚拟币在未来会发展成什么样,我们需要共同期待。
袁苗
板凳# 袁苗 2018-05-15 11:31
比特币发行数量有限,不会产生通胀—–其实,比特币是数字化的,也就是说,随着计算技术的发展,它可以根据需要分割下去,例如1聪就是十的八次方分之一BTC,可以根据需要,将1聪分割成更小的单位…,从这个角度讲,这是发行数量有限吗?
星华不见
地板# 星华不见 2018-05-15 12:09
“区块链”三个字,无疑是近一年来最火的投资概念,近日,随着比特币价格市场的日益升温,成为全球炽热的话题,也将区块链行业推向了最受各行各业从业者追捧的话题。
NEED YOU
4楼# NEED YOU 2018-05-15 12:40
区块链概念已经成为当前全球最热门的投资对象之一。区块链不等于数字货币。区块链是应用工具,基于区块链技术的数字货币本质上只是一种奖励积分,前者是本,后者是末。
姜天文
5楼# 姜天文 2018-05-15 13:22
哈哈哈哈 罕见的看到人民网在推崇区块链,当然从文中可以看出,人民网的态度就是暂时不反对,但也不支持。
韵诺
6楼# 韵诺 2018-05-15 13:42
北京互金协会315召开“旗帜鲜明反对ICO,对火热区块链冷思考”闭门会议,会上成立区块链反欺诈联盟,OKEx徐明星、火币李林现场签字参与发起。
石大发
7楼# 石大发 2018-05-15 14:14
多家区块链实验室和专业投资基金纷纷成立。
illogical
8楼# illogical 2018-05-15 14:45
对于比特币等数字货币和ICO监管,在概念上讲,央行数字货币叫做数字货币电子支付(DCEP),本质上是追求方便性、快捷性和安全性。这种数字货币可以是以区块链技术或分布式账本技术为基础,也可以是以现有电子技术为基础。数字货币有技术上的必然性,但要注意整体金融稳定,防范风险,同时保护消费者。
游客
登录后才可以回帖,登录 或者 注册