以太坊·將自定義資料寫入到區塊鏈中
本文節選自電子書《Netkiller Blockchain 手札》
Netkiller Blockchain 手札
本文作者最近在找工作,有意向致電 13113668890
Mr. Neo Chan, 陳景峰(BG7NYT)
中國廣東省深圳市龍華新區民治街道溪山美地
518131
+86 13113668890
<[email protected]>
文件始創於2018-02-10
版權 © 2018 Netkiller(Neo Chan). All rights reserved.
版權宣告
轉載請與作者聯絡,轉載時請務必標明文章原始出處和作者資訊及本宣告。
http://www.netkiller.cnhttp://netkiller.github.iohttp://netkiller.sourceforge.net |
http://www.netkiller.cn |
http://netkiller.github.io |
http://netkiller.sourceforge.net |
微信訂閱號 netkiller-ebook (微信掃描二維碼)QQ:13721218 請註明“讀者”QQ群:128659835 請註明“讀者” |
微信訂閱號 netkiller-ebook (微信掃描二維碼) |
QQ:13721218 請註明“讀者” |
QQ群:128659835 請註明“讀者” |
||||
---|---|---|---|---|---|---|---|---|---|---|---|
http://www.netkiller.cn | |||||||||||
http://netkiller.github.io | |||||||||||
http://netkiller.sourceforge.net | |||||||||||
微信訂閱號 netkiller-ebook (微信掃描二維碼) | |||||||||||
QQ:13721218 請註明“讀者” | |||||||||||
QQ群:128659835 請註明“讀者” |
5.5. 實用例子
5.5.1. 資料寫入到區塊鏈中
做一筆交易,並寫入資料到區塊鏈中
let Web3 = require("web3"); let fs = require("fs"); let web3 = new Web3("http://localhost:8545"); let log = { time:(new Date).getTime(), type:"info", msg:"Web3 Test!!!" }; let str = JSON.stringify(log); console.log(str); let data = Buffer.from(str).toString('hex'); data = '0x'+data; console.log(data); //將資料寫入到交易中 let coinbase = "0x5c18a33df2cc41a1beddc91133b8422e89f041b7" console.log(coinbase) let user1 = "0xc2b9e316f246d35052118e51b55c75bfe99d247e"; web3.eth.personal.unlockAccount(coinbase, "chen1980"); let address = web3.eth.sendTransaction({ from:coinbase, to:user1, value:'0x00', data:data },function(error, hash){ console.log(hash); });
執行上面程式,會產生一個交易,記下hash值,然後啟動挖礦。
> miner.start();
null
# 過一段時間後停止
> miner.stop();
true
然後檢視這比交易
let Web3 = require("web3");
let fs = require("fs");
let web3 = new Web3("http://localhost:8545");
let address ="0xb15681eb4bdb6b9670d305fb341ebbc95d45c2ede0ea5034ef432b74f30b1b4f";
//從交易地址獲取資料
web3.eth.getTransaction(address).then(console.log);
web3.eth.getTransaction(address,function(error, result){
//console.log(result);
inputData = result.input;
res_str = Buffer.from(inputData.replace('0x',''),'hex').toString();
res_json = JSON.parse(res_str);
console.log(res_json);
});
結果輸出
{ blockHash: '0x78dacc2af60900d2e4cae90b71e27446e6e883df36c53f21cbc9e071f7a586f4',
blockNumber: 1258,
from: '0x5c18a33DF2cc41a1bedDC91133b8422e89f041B7',
gas: 90000,
gasPrice: '18000000000',
hash: '0xb15681eb4bdb6b9670d305fb341ebbc95d45c2ede0ea5034ef432b74f30b1b4f',
input: '0x7b2274696d65223a313531383933313435323537372c2274797065223a22696e666f222c226d7367223a22576562332054657374212121227d',
nonce: 4,
to: '0xc2b9e316F246d35052118E51B55C75BfE99d247e',
transactionIndex: 0,
value: '0',
v: '0x41',
r: '0x7fcd86c7fd975a0e98bd0e61a99da950b0155cd6c4581fefa4defbdcd404a930',
s: '0x16f14ce1fbfadb9d59f343f8ac235cdd73dcedec5db1025ef91206b8bb17a827' }
{ time: 1518931452577, type: 'info', msg: 'Web3 Test!!!' }
{ time: 1518931452577, type: 'info', msg: 'Web3 Test!!!' } 就是儲存在區塊鏈中的資料。