self.sendTransaction = function( account , toaddress , amountEth ) {
var deferred = $q.defer();
const amountWei = self.web3.utils.toWei( amountEth , 'ether');
var tx = {
from : account.address,
to : toaddress,
value : amountWei,
};
self.web3.eth.estimateGas( tx ).then( ( gasLimit ) => {
// Gasを前もって仮計算するけど、その瞬間なのでちょっと多めにする。
tx.gasLimit = self.web3.utils.toHex( gasLimit + 10000 );
return self.web3.eth.getGasPrice();
}).then( ( gasPrice ) => {
// Gasを設定して、nonceを取得(Metamaskでこれが困ったことがあった..)
tx.gasPrice = self.web3.utils.toHex( gasPrice );
return self.web3.eth.getTransactionCount( account.address );
}).then( ( count ) => {
// 今回は1トランザクションだけど、複数送信の場合は注意
tx.nonce = count;
const transaction = new ethereumjs.Tx( tx );
var privatekey = account.privateKey;
// keystoreから復元したら秘密鍵に0xが付いてたけど0xあるとsignで失敗する
var prefix = "0x";
if( privatekey.indexOf( prefix ) === 0 ){
privatekey = privatekey.slice( prefix.length ) ;
}
transaction.sign( ethereumjs.Buffer.Buffer.from( privatekey , 'hex' ) );
const transactionHex = '0x'+transaction.serialize().toString( 'hex' )
self.web3.eth.sendSignedTransaction( transactionHex ).once('transactionHash', (hash) => {
console.log('transaction Hash', 'https://ropsten.etherscan.io/tx/' + hash);
}).once('receipt', ( receipt ) => {
console.log('receipt' , receipt );
})
.on('confirmation' , (confirmationNumber, receipt) => {
console.log('confirmation', confirmationNumber, receipt);
})
.on('error', console.error );
});
confirmationをonceにしたから、confirmationずっと流れると思ったけど24で終了した?
解除ってどうやるんだろう、それかonだけにするしかないかな。