我有两个合同说A和B,两个节点在不同的机器Machine1和机器2中运行,具有相同的网络ID,我使用节点url添加了对等体。合同A由机器1部署在区块链上,合同B由机器2部署。现在我想从机器2和机器1访问合同A的功能,并且还从机器2和机器1访问合同B的功能。如何访问功能
答案 0 :(得分:2)
以太坊区块链是一个分布式应用程序平台。这意味着合同代码未部署到特定节点;相反,它被部署到一个分布式分类账,每个节点都有一个副本(假设每个节点已与网络的其余部分达成共识)。同样,当您调用契约函数时,函数调用至少会在网络中正在进行挖掘的那些节点上执行(验证事务)。
通过向网络广播交易来创建合同。部署合同的功能也通过广播交易来调用。
准备创建合同的交易将返回合同的地址。该地址引用区块链上合同的唯一位置;记录下来。将该事务发送到区块链时,请等待当前块被挖掘。一旦发生这种情况,所有节点都应该在几毫秒内拥有代码的副本,然后可以处理调用该合同中的函数的事务。
创建合同后,准备另一个调用函数的事务,引用您先前记录的合同地址作为事务的接收者。然后,将此事务广播到网络。首先接收事务的节点并不重要。最后,在事务被挖掘后不久,网络中的所有节点都将具有区块链的更新状态,该状态反映了函数调用所产生的任何更改。
答案 1 :(得分:1)
要生成Abi goto https://etherchain.org/solc并放置合约代码并获取abi
使用var contract = eth.contract(abi).at(contractaddress)
用ABI和合同地址替换abi和地址。
这将允许您访问合同。