Contract-Invocation

從外部 JS 腳本訪問松露合約抽象

  • March 8, 2022

在 truffle (v3.2.1) 中編寫測試時,我可以忘記諸如合約的 ABI 和地址之類的東西,只需使用 ContractName.deployed() 與我的 testrpc 鏈上的合約進行互動。如何在我的外部 Javascript 程式碼中模仿這種行為,也就是說,不使用 truffle 的內置控制台或truffle test?是否需要在腳本中導入庫,還是需要手動獲取合約的 ABI 和部署地址,就好像我沒有使用 Truffle 一樣?

如果我可以通過 truffle 執行我的 JS 程式碼來使用這些契約抽象,我也會很好,但我不確定我將如何做到這一點。

謝謝!

不確定這是否是預期的方式,但嘗試在 Internet 上找到的零碎程式碼導致了一些似乎有效的方法。這是我在我的 javascript 應用程序中所做的:

....
const artifacts = require('../build/contracts/MyContract.json')
const contract = require('truffle-contract')
let MyContract = contract(artifacts);
MyContract.setProvider(web3.currentProvider);    
return MyContract.deployed().then(function(instance){      
 return instance.sendTransaction(param1, param2, {from: accounts[0]});
}).then(function(tx_id){
....

json 文件是 truffle 在遷移 MyContract 時生成的文件。請注意,我必須安裝truffle-contract(在松露之上)才能工作。如果有人有更優雅的方法,請分享!

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