Web3js

如何與已經部署的智能合約互動

  • February 6, 2021

我正在閱讀我在solidity文件中找到的這份契約https://docs.soliditylang.org/en/develop/solidity-by-example.html#safe-remote-purchase ,我認為這份契約是獨一無二的,由拍賣行。所有使用者都可以出價。從實現的角度來看,web3.js 中的使用者如果不部署,如何呼叫這個合約的方法呢?

通過閱讀契約,基本上有兩個角色:

> Seller:這是在建構子內部分配的,這意味著只有部署此合約的人才能成為賣方:

constructor() payable {
   seller = payable(msg.sender); // Contract creator becomes seller
   value = msg.value / 2;
   require((2 * value) == msg.value, "Value has to be even.");
}

**> 買家:**可以是執行購買的任何人,如下面的函式所述:

function confirmPurchase()
   public
   inState(State.Created)
   condition(msg.value == (2 * value))
   payable
{
   emit PurchaseConfirmed();
   buyer = payable(msg.sender); // Anyone -successfully- calling this function becomes buyer
   state = State.Locked;
}

一旦分配了角色,契約中的其他功能只能由賣方或買方呼叫,具體取決於功能修飾符(onlyBuyer, onlySeller)。

引用自:https://ethereum.stackexchange.com/questions/93141