如何用web3.js在以太坊区块链上保存数据?
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
雖然有北大博士講,95%的區(qū)塊鏈項(xiàng)目都沒(méi)有前途,但我們知道區(qū)塊鏈還是有它的優(yōu)勢(shì),比如數(shù)據(jù)的不可篡改性對(duì)于版權(quán)保護(hù)有相當(dāng)大的意義,而地址的匿名性則有其他潛在的用途。那么,如何將任意數(shù)據(jù),比如圖像或文本寫入以太坊區(qū)塊鏈呢?本文將講解如何使用web3.js實(shí)現(xiàn)這一功能并給出相應(yīng)的實(shí)現(xiàn)代碼。
實(shí)現(xiàn)任意數(shù)據(jù)上鏈的核心是web3.eth.sendTransaction()方法的使用,我們將借助一個(gè)轉(zhuǎn)賬交易來(lái)完成任意數(shù)據(jù)上鏈的任務(wù)。在要發(fā)送的交易對(duì)象中,使用data字段就可以傳入任意的16進(jìn)制字符串。
將數(shù)據(jù)轉(zhuǎn)換為16進(jìn)制字符串
我們可以使用web3.toHex()方法將一個(gè)字符串轉(zhuǎn)換為16進(jìn)制字符串:
let data = web3.toHex('你可以將任意數(shù)據(jù)寫入以太坊區(qū)塊鏈')得到的data值為:0x4f6053ef4ee55c064efb610f6570636e519951654ee5592a574a533a575794fe。
當(dāng)然不一定需要使用web3.toHex()方法,可以使用任何能夠得到16進(jìn)制串的方法,例如在NodeJS中使用Buffer:
let data = '0x' + Buffer.from('使用Buffer更好處理圖像數(shù)據(jù)').toString('hex')得到的data值為:0xe4bdbfe794a8427566666572e69bb4e5a5bde5a484e79086e59bbee5838fe695b0e68dae。
聲明交易對(duì)象
接下來(lái)然后設(shè)置要發(fā)送的交易對(duì)象,我們需要借助一個(gè)轉(zhuǎn)賬交易來(lái)實(shí)現(xiàn)數(shù)據(jù)上鏈,因此設(shè)置的主要字段是轉(zhuǎn)出賬戶from,轉(zhuǎn)入賬戶to,轉(zhuǎn)賬金額value,當(dāng)然,少不了data,我們就是為了它才要搞一個(gè)交易:
let txo = {from: web3.eth.accounts[0],to: web3.eth.accounts[1],value:'0x00',data: data }如果你只有一個(gè)賬戶,也可以自己轉(zhuǎn)給自己:)
發(fā)送交易
最后調(diào)用web3.eth.sendTransaction()方法即可:
web3.eth.sendTransaction(txo, (error, hash) => console.log(hash));當(dāng)交易成功后,你可以使用etherscan.io來(lái)查看交易信息中的input data。
推薦兩個(gè)以太坊相關(guān)的實(shí)戰(zhàn)教程:
- 區(qū)塊鏈初學(xué)者? ?:?以太坊 DApp 實(shí)戰(zhàn)開發(fā)入門
- 區(qū)塊鏈開發(fā)進(jìn)階:去中心化以太坊?DApp 電商平臺(tái)實(shí)戰(zhàn)開發(fā)
更多的內(nèi)容可以訪問(wèn)博客:
http://blog.hubwiz.com/2018/04/05/save-data-in-ethereum/
轉(zhuǎn)載于:https://my.oschina.net/u/3837977/blog/1802837
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的如何用web3.js在以太坊区块链上保存数据?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 模式的秘密-观察者模式(二)
- 下一篇: [日常] Go语言圣经--Channel