我如何从不同的节点访问合约功能?



我有两个合约A和B,两个节点在不同的机器上运行,机器1和机器2具有相同的网络id,我使用节点url添加了peer。合约A由机器1部署在区块链上,合约B由机器2部署。现在我想从machine2和machine 1访问合约A的函数,同时从machine2和machine 1访问合约B的函数。如何访问

以太坊区块链是一个分布式应用平台。这意味着合约代码不会部署到特定节点;相反,它被部署到一个分布式账本中,每个节点都有一个副本(假设每个节点都与网络的其他节点达成了共识)。同样,当你调用合约的一个函数时,函数调用至少在你的网络中那些正在积极挖掘(验证交易)的节点上执行。

合约是通过向网络广播交易来创建的。已部署契约上的函数也可以通过广播事务来调用。

创建合约的交易准备返回合约的地址。这个地址引用了合约在区块链上的唯一位置;记录它。当您将该交易发送到区块链时,等待当前区块被挖掘。一旦发生这种情况,所有节点都应该在几毫秒内拥有一份代码副本,然后可以处理调用该合约中函数的交易。

一旦合约被创建,准备另一个调用函数的交易,引用你之前记录的合约地址作为交易的接收者。然后,将此交易广播到网络。哪个节点首先接收事务并不重要。最终,在交易被挖掘后不久,网络中的所有节点都将拥有区块链的更新状态,该状态反映了函数调用导致的任何更改。

要生成Abi,请访问https://etherchain.org/solc并放置您的合约代码并获取Abi

使用var contract = eth.contract(abi).at(contractaddress)

用合同的abi和地址代替abi和地址。

这将允许您访问合同。

最新更新