Contract-Invocation
從外部 JS 腳本訪問松露合約抽象
在 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
(在松露之上)才能工作。如果有人有更優雅的方法,請分享!