Truffle

如何從 app.js (DApp) 呼叫外部應付合約功能?

  • November 8, 2019

合約有一個功能:

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>});

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