Ether

API 呼叫應該在 Solidity 後端還是 Javascript 前端?

  • December 26, 2017

我對區塊鏈開發相當陌生。當 API 中的條件為真時,我想在我的合約中呼叫一個函式。我應該在我的合約中還是在我的前端呼叫這個 API?

如果您的情況發生在您的智能合約中,例如您已經達到一定數量的眾籌訂閱者,您可以使用外部監視器(例如使用 node.js 守護程序)跟踪您的智能合約**EVENTS活動** 當事件在你的合約中被觸發時,它會被守護程序檢測到,進而觸發你的預程式程式碼/腳本的執行。**Ethers.io**有一個很棒的智能合約庫,你可以用它來建構你的守護程序。

如果您需要**method在外部事件發生時(例如,使用者登錄您的網​​站)呼叫您的智能合約,它就像使用Web3.js庫的合約方法一樣簡單。**


以下是如何在乙太坊合約上呼叫方法的片段(來自基於 JS 的 API 伺服器):

const Web3 = require('web3')
const web3 = new Web3('https://mainnet.infura.io')

function myFunction(myParam) {
   var contractAddress = '<ENTER-YOUR-CONTRACT-ADDRESS-HERE>'
   var contractABI = [<ENTER-YOUR-ABI-HERE>]
   var contract = new web3.eth.Contract(contractABI, contractAddress)
   var callData = contract.methods.<CONTRACT-FUNCTION>(myParam).call()
   callData.then(function(result) {
       console.log(result)
   })
}

myFunction(<MY-PARAM>)

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