मैं कोवन टेस्टनेट पर एक लेनदेन पर हस्ताक्षर करने और भेजने में सक्षम होने के लिए प्रलेखन का पालन कर रहा हूं। जब मैं txHash को सांत्वना देता हूं तो मुझे वर्तमान में एक अपरिभाषित मान मिल रहा है।

web3.eth.getTransactionCount(account1, (err, txCount) => {
    // 1)Build Transaction
    const txObject = {
        nonce: web3.utils.toHex(txCount),
        to: account2,
        value: web3.utils.toHex(web3.utils.toWei('0.05', 'ether')),
        gasLimit: web3.utils.toHex(2100),
        gasPrice: web3.utils.toHex(web3.utils.toWei('10', 'gwei'))
    }
    
     // 2)Sign Transaction
    const tx = new Tx(txObject,{'chain':42})
    tx.sign(privateKey1)
    
    const serializedTransaction = tx.serialize()
    const raw = '0x' + serializedTransaction.toString('hex')

    console.log("raw:", raw)
    console.log("tx:", serializedTransaction)

    // 3)Broadcast Transaction
    web3.eth.sendSignedTransaction(raw, (err, txHash) =>{
        console.log('txHash:', txHash)
    })
    // COMMENTED-OUT web3.eth.sendSignedTransaction('0x' + serializedTransaction .toString('hex'))
    // .on('receipt', console.log);
})
0
PythonCoder1981 14 नवम्बर 2021, 03:18

1 उत्तर

सबसे बढ़िया उत्तर

signTransaction() केवल हस्ताक्षर करता है। यह (हस्ताक्षरित) लेनदेन को नेटवर्क पर प्रसारित नहीं करता है।

उसके लिए, आप sendSignedTransaction() (docs< का उपयोग कर सकते हैं /a>), जो प्रदाता को (हस्ताक्षरित और क्रमबद्ध) tx डेटा सबमिट करता है, और प्रदाता इसे नेटवर्क पर प्रसारित करता है।

web3.eth.sendSignedTransaction(signedTx.rawTransaction)
.on('receipt', console.log);
1
Petr Hejda 14 नवम्बर 2021, 11:28
मैंने अपना कोड अपडेट किया और अब किसी भी विचार को अपरिभाषित कर रहा हूं?
 – 
PythonCoder1981
14 नवम्बर 2021, 21:59
आपको undefined किस हिस्से में मिल रहा है? क्या err sendSignedTransaction कॉलबैक में कोई गैर-शून्य मान लौटा रहा है?
 – 
Petr Hejda
14 नवम्बर 2021, 22:56
कंसोल में SendSignTransaction में। आउटपुट में लॉग यह कहता है txHash: अपरिभाषित
 – 
PythonCoder1981
15 नवम्बर 2021, 00:45
तब यह संभवत: err चर में एक मान लौटा रहा है, और इसने txHash सेट नहीं किया है। (JS में, undefined वेरिएबल के लिए वेरिएबल का उपयोग किया जाता है, जिन्हें कोई मान सेट नहीं किया गया है।) क्या आप err मान की जांच कर सकते हैं?
 – 
Petr Hejda
15 नवम्बर 2021, 01:35
1
धन्यवाद, मैंने इसे कंसोल के बाद समझ लिया। "गलती" लॉग करें, गैस सीमा गलत तरीके से सेट की गई थी, मेरे पास 2100 पर थी और इसे 21000 में बदल दिया और यह काम कर गया।
 – 
PythonCoder1981
15 नवम्बर 2021, 07:15