Je tente de déployer un contrat intelligent localement en utilisant Web3, Truffle et Testrpc. J'ai utilisé Truffle pour compiler un contrat intelligent et avoir le code suivant pour extraire l'ABI et le bytecode. Dans le même script, je suis en train de déployer le contrat en utilisant web3.eth.contract.deploy (donné dans cette documentation: https://web3js.readthedocs.io/en/1.0/web3-eth-contract.html#deploy) mais ont été obtenir cette erreur:Les demandes synchrones ne sont pas prises en charge lors du déploiement d'un contrat intelligent à l'aide de web3
Error: Synchronous requests are not supported
Que dois-je faire pour se déplacer ce?
Voici le script de référence:
let fs = require("fs");
let Web3 = require('web3'); // https://www.npmjs.com/package/web3
var TestRPC = require("ethereumjs-testrpc");
let web3 = new Web3();
web3.setProvider(TestRPC.provider());
let source = fs.readFileSync("../SmartContracts/build/contracts/TheContract.json");
let JSONObject = JSON.parse(source);
// ABI and bytecode description as JSON structure
let abi = JSONObject.abi
let bytecode = JSONObject.unlinked_binary;
// Create Contract proxy class
let contractSettings = {
from: addr,
gas: 1000000,
data: bytecode
}
let SampleContract = new web3.eth.Contract(abi, contractSettings);
let deploySettings = {
data: bytecode,
from: addr
}
SampleContract.deploy(deploySettings)
.send({
from: addr,
gas: 1500000,
gasPrice: '30000000000000'
})
.on('error', function(error){
console.log("error");
})
.on('transactionHash', function(transactionHash){
console.log("transaction hash");
})
.on('receipt', function(receipt){
console.log("receipt") // contains the new contract address
})
.on('confirmation', function(confirmationNumber, receipt){
console.log("confirmation");
})
.then(function(newContractInstance){
console.log(newContractInstance.options.address) // instance with the new contract address
});
console.log ("fini");
Avez-vous trouvé une solution à cela? J'ai le même problème. –