Прежде всего, если вы пытались развернуть свой контракт на блокчейне с помощью Remix. И вы использовали созданный API для вашего созданного контракта. Фактически вы взаимодействуете со своим контрактом через Интернет. Вы можете просмотреть это видео, чтобы увидеть, как развертывать и использовать функции вызова внутри вашего контракта. Я рекомендую вам посмотреть это видео и сделать его руководство здесь.
Если вы хотите вызывать функции (общедоступные). Есть три шага, чтобы вы могли использовать свои контракты.
ШАГ первый: Разверните свой контракт в Blockchain и найдите свой ABI и адрес контракта. Например, если вы использовали remix для развертывания контракта, вы увидите эту информацию, щелкнув детали на вкладке компиляции.
![введите описание изображения здесь](https://i.stack.imgur.com/xWR0Y.png)
ШАГ ВТОРОЙ: используйте web3 и вставьте его в свой веб-браузер (установите Metamask тогда у вас уже есть web3, введенный в браузер)
ШАГ 3: Создайте API контракта, например экземпляр, установив поставщика web3, ABI и адрес контракта, которые вы получили на шаге 1.
ШАГ четвертый: Назовите свои контрактные функции.
Вот как вы убедитесь, что web3 уже внедрен и вы подключены к правильной цепочке блоков (TestNet / MainNet)
var Web3 = require('web3');
if (typeof web3 !== 'undefined') {
// Use Mist/MetaMask's provider
console.log('Web3 exist!')
console.log(web3)
web3 = new Web3(web3.currentProvider);
web3.version.getNetwork((err, netId) => {
switch (netId) {
case "1":
console.log('This is mainnet')
break
case "2":
console.log('This is the deprecated Morden test network.')
break
case "3":
console.log('This is the ropsten test network.')
break
default:
console.log('This is an unknown network.')
}
})
} else {
console.log('No web3? You should consider trying MetaMask!')
// fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
Вот как вы можете взаимодействовать с развернутым контрактом.
var fooContract = web3.eth.contract( YOUR_ABI, (err, ctr) => { return ctr} );
web3.eth.defaultAccount = web3.eth.accounts[0];
$scope.accounts = web3.eth.accounts;
console.log(web3.eth.defaultAccount);
var CONTRACT = fooContract.at('YOUR_Deployed_contract_ADDRESS',(err, ctr)=>{
return ctr;
} )
Теперь вы можете легко использовать переменную CONTRACT для вызова ее общедоступных функций.
Звонки выглядят так:
CONTRACT.contractFunction(params)
PS: Пожалуйста, свяжитесь со мной, если у вас возникнут вопросы или проблемы (сложно объяснить все в одном посте)!
person
Farzad Salimi Jazi
schedule
22.12.2017