Truffle
如何從 app.js (DApp) 呼叫外部應付合約功能?
合約有一個功能:
function purchaseTokens() external payable { require(msg.value>0); ...etceteras... }
我需要的是一個 app.js 部分,看起來像這樣(假設我想硬編碼 12 wei 作為押金):
purchaseTokens : function (){ App.contracts.name_of_contract.deployed().then(async function(instance){ let message = await instance.purchaseTokens.call('12'); App.showMessage(message); }).catch((err) =>{ App.showError(err); }) },
但是,js 函式返回:TypeError: Cannot read property ’toString’ of null。
我應該為 app.js 部分做什麼?
我不是這個方言中最強的玩家,但這看起來更熟悉:
await instance.purchaseTokens.call('12');
嘗試像這樣添加交易參數(gas、gasPrice、value):
await instance.purchaseTokens.call({value: <amount>});
call
可能是錯誤的,所以:`await instance.purchaseTokens({value: });
希望能幫助到你。
ps 如果函式有參數並且您還需要事務參數:
instance.function(arg1, arg2, {gas: <qty>, value: <amount>});