#javascript #json #solidity
Вопрос:
Я уже несколько недель борюсь с умными контрактами, и я серьезно продвигаюсь вперед, но я застрял на этом этапе…
class App extends Component {
async componentWillMount() {
await this.loadWeb3()
await this.loadBlockchainData()
}
async loadBlockchainData() {
const web3 = window.web3
const accounts = await web3.eth.getAccounts()
this.setState({ account: accounts[0] })
const networkId = await web3.eth.net.getId()
const Musketeer = Musketeer.networks[networkId]
if(Musketeer) {
const Musketeer = new web3.eth.Contract(Musketeer.abi, Musketeer.address)
/// I DONT NEED THIS PART ANYMORE I"LL SKIP DISPLAYING THE BALANCE ///
this.setState({ Musketeer })
let MusketeerBalance = await Musketeer.methods.balanceOf(this.state.account).call()
this.setState({ MusketeerBalance: MusketeerBalance.toString() })
//////////////////////////////////
} else {
window.alert('Musketeer contract not deployed to detected network.')
}
this.setState({ loading: false })
}
async loadWeb3() {
if (window.ethereum) {
window.web3 = new Web3(window.ethereum)
await window.ethereum.enable()
}
else if (window.web3) {
window.web3 = new Web3(window.web3.currentProvider)
}
else {
window.alert('Non-Ethereum browser detected. You should consider trying MetaMask!')
}
}
Я пытаюсь здесь поместить контрактного мушкетера в App.js но я не совсем понимаю, что мне нужно сделать, чтобы интегрировать это. Если бы кто-нибудь мог объяснить мне это на неандертальском языке, я был бы благодарен до конца своей жизни.. Я просто не понимаю этого в данный момент.
Заранее спасибо!
Ответ №1:
Шаги по подключению к этому контракту из вашего React App.js будет выглядеть следующим образом:
Обязательное условие: контракт развернут, и у вас есть его адрес. Если вы используете трюфель, truffle develop
то truffle migrate --reset
вам следует развернуть свой контракт локально. Посмотрите этот блог о трюфелях.
- Загрузите web3, если у пользователя есть кошелек
- (Необязательно) поместите объект web3 и объект учетных записей из
web3.eth.getAccounts()
вашего штата - Создайте экземпляр контракта с адресом из развертывания. Вы также можете динамически развернуть контракт из приложения, но это сложнее.
- Добавьте контракт в свой штат
- Методы вызова по контракту
Проверьте это репозиторий github и добавьте то, что вам нужно.
Комментарии:
1. Большое спасибо, чувак, это как раз то, что мне было нужно! Спасибо, что уделили мне время, отсюда я могу плавать самостоятельно !