web3ライブラリを使ったウォレット操作確認

web3ライブラリを使ったウォレット操作確認

web3ライブラリを使ったウォレット操作を確認する。
確認環境:nodejs(v1.0.0-beta.48)、npm(v6.9.0)、nvm(v8.12.0)

●残高取得(balance.js)

const Web3 = require("web3");
const provider = new Web3.providers.HttpProvider('https://mainnet.infura.io/W1ghsx*********'); 
web3 = new Web3(provider);

const address = "0x*****************(0xから始まる42桁)";

getBalance(address)
.then((balance) => {
        console.log(balance);
})
.catch((e) => {
        console.log(e);
});

function getBalance(address) {
        return web3.eth.getBalance(address);
};
▼ 1000000 (残高が表示される)

●トランザクション取得(transaction.js)

const Web3 = require("web3");
const provider = new Web3.providers.HttpProvider('https://mainnet.infura.io/W1ghsx*********'); 
web3 = new Web3(provider);

const transactionId = "0x***********************(0xから始まる66桁)";

getTransaction(transactionId)
.then((balance) => {
        console.log(balance);
})
.catch((e) => {
        console.log(e);
});

function getTransaction(transactionId) {
        return web3.eth.getTransaction(transactionId);
};

●送金処理

送金処理は主に、①燃料計算(GAS)、②nonceの取得、③署名、④送金からなる。

①燃料計算(GAS)
Ethereum.prototype.getGasPrice = function() {
        return new Promise((resolve, reject) => {
                web3.eth.getGasPrice((error, result) => {
                        if (error) {
                                reject(error);
                        }
                        const price1 = parseInt(new BN(result).dividedBy(1e9).toString(10));
                        const price2 = new BN(price1).plus(2).toString(10);
                        const price3 = new BN(price2).multipliedBy(1e9).toString(10);
                        resolve(price3);
                });
        });
};
②nonce(NumberONCE)の取得

nonce:送金元アドレスの送金回数(トランザクション数)。二重送金を防ぐ目的で使用される。

Ethereum.prototype.getNonce = function(address) {
        return web3.eth.getTransactionCount(address);
};
③署名
Ethereum.prototype.createSign = function(private_key, to_address, amount, gas_price, nonce) {

        try {

                const gas_limit = 21000;
                const send_amount = new BN(amount.toString()).multipliedBy(1e18).toString(10);
                const key = private_key.substr(0, 2) == "0x" ? private_key.substr(2) : private_key;

                const parameter = {
                        nonce: nonce,
                        to: to_address,
                        value: "0x" + send_amount.toString(16),
                        data: '',
                        gasPrice: "0x" + gas_price.toString(16),
                        gas: "0x" + gas_limit.toString(16)
                };

                const tx = new EthereumTx(parameter);
                tx.sign(Buffer.from(key, 'hex'));
                const serializedTx = tx.serialize();
                return '0x' + serializedTx.toString('hex');

        } catch(e) {
    return (e);
        }

};
④送金
Ethereum.prototype.send = function(signature) {

        return new Promise((resolve, reject) =>{
                web3.eth.sendSignedTransaction(signature)
                .on('transactionHash', function(tx_hash){
                        resolve(tx_hash);
                })
                .on('error', function(err) {
                        reject(err)
                });
        });

};

※ INFRAで取得したAPIを取得することで手軽にテストや運用ができる。
INFURA(https://infura.io/)は、Ethereumのノードをホスティングしてくれるサービス。 提供されている、すでに同期済みのノードを使うことで同期にかかる容量や時間を無駄にすることなくEthereumネットワークに参加することが出来る。

web3.js(Ethereum JavaScript API)を用いることで、WEB、またはアプリケーションから残高照会やトランザクションの取得、送金などの機能を実装することが可能となります。

1

仮想通貨取引所のBitGetについて紹介したいと思います。

2

今回は最近使用している仮想通貨取引所の BitGet のトレードの方法を紹介します!

国内から日本円での入金方法を解説しています。 BitGetとは?登録方法は?という人は 前回の記事 をご覧下さい。

3

今回はマイニングで必要、あった方が良いものをご紹介します。 マイニングとは?という方は以下の記事から! CRYPTO LIFE2021.04.01マイニングとは?誰でもできるの?簡単なやり方を公開‼収 ...

4

今回はマイニングをするに至って注意が必要なことをまとめましたので是非ご覧ください。当たり前のことしか書いていませんがマイニング上級者の方も一度見直すという意味でご覧いただければ幸いです。

5

今回はマイニングをするに至って注意が必要なことをまとめましたので是非ご覧ください。当たり前のことしか書いていませんがマイニング上級者の方も一度見直すという意味でご覧いただければ幸いです。

6

Looopでんきは基本料金0円のシンプルプラン。 多くのご契約で毎月実は発生している「基本料金」をなしにして「使った分だけ」をお支払いするため、 電気をあまり使わない人にも、電気をたくさん使う人にもメリットがあります。 さらにいまはオール電化向けの新プランも登場!オール電化ご利用の方はぜひ! WEB上で切り替えを受け付けているので、24時間いつでも簡単に申し込みが可能です。 いくら安くなるのかのシミュレーションもできるので非常にわかりやすい新電力会社となっています。

© 2024 CRYPTO LIFE