解密区块链:从基础概念到技术实现的进阶攻略(7)
时间:2023-09-11 12:08 来源:网络整理 作者:墨客科技 点击:次
确保有解锁的账户和资金,部署完成后,在区块链上就会创建一个合约。这一步骤是需要支付执行的。一旦transaction成功进入区块,账户余额会根据以太坊虚拟机的gas规则被扣减。
第七步:与合约交互 与合约交互典型做法是使用eth.contract()功能的抽象层,它会返回java对象。描述合约可用功能的标准方法是ABI定义。
当sendTransaction被调用时,功能调用通过发送transaction来执行。需要花费以太币发送,记录会永久记录在区块链上。这种方式返回的是transaction散列。 当call被调用时,功能在以太坊虚拟机本地执行。用这种方式进行的调用不会记录在区块链上,因此不会改变合约内部状态。这种调用方式被称为恒定功能调用,不花费以太币。 最后,有兴趣的朋友,也可以尝试testrpc和truffle,更加方便。 声明:文中关于“Ethereum Homestead 0.1 documentation”来自ethereum社区。如想了解更多,可通过ethereum社区官网进一步学习。 •Q&A Q1:一次交易都要在以太坊的所有节点的EVM上执行一遍吗? A1:是的。区块链其实是比较昂贵的,它的目的不是为了提升效率。在Ethereum Homestead里是这样描述的:Each and every full node in the network does the same calculations and stores the same values. Clearly Ethereum is not about optimising efficiency of computation. Its parallel processing is redundantly parallel. Q2:哪些公司用以太坊做开发基础? A2:国内的金丘股份,万向区块链实验室,众安保险,蚂蚁金服。 Q3:智能合约的代码量最大是1M吗?也就是一个区块的大小? A3:1M是比特币的区块限制。 Q4:以太坊同步一次要多久? A4:比特币区块链的大小约为84.9GB,现在以太坊的区块链还比较小,第一次同步的时候,持续的十个小时左右,于网络速率有关。 Q5:如果由于网络中断,导致出现两条链,当网络恢复后,如何合并这两条链? A5:不会合并的。最终还是拼的算力。 (接上一问) Q6:这样不是会导致很多分叉吗? A6:短时间是可能存在分叉的,但最终不会有分叉存在,例如比特币”为了防止该区块因为子链太短而被其它节点抛弃,那么还得等产生6个新的后续区块,才能最终确认该transaction已经被可靠地写入区块链中。即,确保可靠写入,需要约60分钟。 ”版本升级时,是有可能存在分叉问题的,因为有些矿工不愿意升级。 Q7:如果智能合约太大,无法在一个区块中写入,以太坊如何操作? A7:因为合约之间可以通过消息调用,所以可以把代码拆开,分别deploy。当然前提是真得有这么大的合约。
|


