Web3js
如何與已經部署的智能合約互動
我正在閱讀我在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
)。