Моя цель — отправить подписанную транзакцию для создания смарт-контракта, однако я столкнулся с проблемой, которую не мог решить несколько дней:
Когда я отправляю транзакцию (в приватной цепочке), есть два разных окончания:
- 1 Web3js говорит мне, что это сработало, я вижу транзакцию в блоке. Однако при попытке связаться с контрактом у меня есть следующий вывод:
Ошибка: не удалось декодировать uint256 из ABI: 0x
Когда я пытаюсь запустить eth.getCode(contractAddress)
Geth, он возвращает0x
- 2 Web3js говорит мне, что транзакция не добыта на 50 блоков (нода не успела добыть 50 блоков). Но я вижу транзакцию в блоке (в geth).
Вот код, который я использую:
web3g = result;
getContractInstance(function (error, instance) {
if (error) {
console.log(error);
} else {
let newContract = instance;
let deploy = newContract.deploy({
data: bytecode,
arguments: [MY ARGS]
}).encodeABI();
let gas = web3g.utils.toHex(3000000);
let gasPrice = web3g.utils.toHex(21000000000);
let gasLimit = web3g.utils.toHex(4000000);
let nonce;
web3g.eth.getTransactionCount(req.body.sender_address)
.then(function (result) {
nonce = result;
nonce = web3g.utils.toHex(nonce);
let transactionObject = {
gas: gas,
gasPrice: gasPrice,
gasLimit: gasLimit,
data: deploy,
from: req.body.sender_address,
nonce: nonce
};
web3g.eth.accounts.signTransaction(transactionObject, req.body.private_key, function (error, signedTx) {
if (error) {
console.log(error);
} else {
console.log(signedTx);
web3g.eth.sendSignedTransaction(signedTx.rawTransaction)
.on('confirmation', function (number, receipt) {
if (number == 1) {
// do stuff
Может ли кто-нибудь указать мне, что я делаю неправильно?
Примечание. Я могу отправить подписанную транзакцию, используя метод, описанный выше, для передачи эфира между адресами.
Изменить: оценка газа возвращает следующее: ошибка: возвращенная ошибка: требуемый газ превышает допустимое значение или всегда завершается сбоем транзакции
Я столкнулся с аналогичной проблемой при создании подписанных транзакций и в конечном итоге разработал этот пакет. https://www.npmjs.com/package/web3js-raw . Должно решить вашу проблему.
Итерация 122442
Чим
Итерация 122442
Итерация 122442
Итерация 122442
Чим
Итерация 122442
Чим