من یه قرارداد ساده نوشتم و قصد دارم با web3js بهش وصل بشم
در ترمینال node این دستورات رو میزنم:
var Web3 = require('web3')
var fs = require('fs')
var url = 'http://127.0.0.1:8545'
var web3 = new Web3(rul)
var address = '0x380A2ffeAe9A65291Ea863212Aad0d4Fa275b205'
var contractJson = fs.readFileSync('address of my contract.json')
var contractAbi = JSON.parse(contractJson)
var contract = new web3.eth.Contract(contractAbi, contractAddress)
و با خطای زیر مواجه میشم
Error: You must provide the json interface of the contract when instantiating a contract object.
شایان جان مسیر رو توی کد درست گذاشتم. اینجا برای کوتاهتر شدن اینجوری نوشتم
مشکل انگار اینجاست که فایل contract.json برای اینکه درست پارس بشه، باید اونو توی براکت ‘[ ]’ قرار بدیم، بعد پارس کنیم
اینو از اینجا فهمیدم که وقتی ABI یه توکن موجود رو میری از etherscan کپی میکنی، اول و آخرش براکت داره اما فایل json مربوط به کانترکتی که توسط truffle ساخته میشه اینطور نیست
مشکل اینجاست که شما کل فایلی که ترافل میسازه رو دارید استفاده می کنید
باید از داخل اون فایل ABI رو بیارید بیرون و از اون استفاده کنید
داخل این پست توضیح داده شده نحوه استفاده از ABI