Как мне правильно интегрировать свой смарт-контракт?

#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 вам следует развернуть свой контракт локально. Посмотрите этот блог о трюфелях.

  1. Загрузите web3, если у пользователя есть кошелек
  2. (Необязательно) поместите объект web3 и объект учетных записей из web3.eth.getAccounts() вашего штата
  3. Создайте экземпляр контракта с адресом из развертывания. Вы также можете динамически развернуть контракт из приложения, но это сложнее.
  4. Добавьте контракт в свой штат
  5. Методы вызова по контракту

Проверьте это репозиторий github и добавьте то, что вам нужно.

Комментарии:

1. Большое спасибо, чувак, это как раз то, что мне было нужно! Спасибо, что уделили мне время, отсюда я могу плавать самостоятельно !