第十六課 不用程式設計,如何把長文章記錄到以太坊區塊鏈上?

weixin_34054866發表於2018-07-22
1190574-84e4ab4bba12380b.jpg

1,摘要

【本文目標】
通過本文學習,以太坊學習者可以把中文長文章記錄到區塊鏈上,不會被刪除。

【前置條件】
1)有數字錢包,裡面有不少於0.02的ETH。
2)本地CHROME瀏覽器安裝有MetaMask錢包外掛,沒有的參考課程《第一課 如何在WINDOWS環境下搭建以太坊開發環境》完成安裝。

【技術收穫】
1) 區塊鏈的去中心化,不可篡改的特點證實;
2) 以太坊Gas,Gas Price的理解;

2, 朋友圈不可忘卻的刷屏和404

2018年7月22日,當安比颱風經過上海時,輝哥整個朋友圈卻都在刷屏一個主題的文章,然後點選又是“已停止訪問該網頁”的提示。直到後來,輝哥看到“被永久記錄在以太坊高度6007493之上”的文章提示,對釋出者肅然起敬。是的,其實區塊鏈從業者可以做些自己的事情,即使如同這颱風不被人重視一樣!

3,釋出長文章實操

作為技術工作者,我們回到技術實現上來吧。這個命題就轉化為“如何把長文章記錄到以太坊區塊鏈上”了。輝哥提供一種可實現的方法,針對不願意程式設計,對區塊鏈又有一定了解的人能夠記錄不想被抹去的重要時刻和內容。
作為舉例,輝哥找了一篇正能量的文章《李克強:疫苗質量安全是不可觸碰的“紅線”》,給大家演示如何把長文章記錄到以太坊區塊鏈上。

3.1URL編碼

首先把該篇文章COPY到WORD文件上,做些文字大小調整的基本動作。
然後開啟“線上URL編解碼工具”,把相關文字複製上去。點選按鈕“URL ENCODE編碼”,把產生的編碼內容保持到本地檔案“URL編碼2.txt”。

1190574-c4f470381d0b7cb1.png

3.2 ASCII字母和數字轉換為16進位制

URL編碼存在一個問題,就是對應的英文字元和數字不會變為ASCII形式,還是保持原形態,需要識別出來以16進位制方式進行轉換。參考附件的WORD文件標識,輝哥把不能URL轉換的文字都標識了出來。

1190574-7fe6a70f0ef8cf91.png

然後在“URL編碼2.txt”查詢對應的關鍵字例如http,找到後切換到16進位制轉換工具,然後複製16進位制替換到“URL編碼2.txt”的"http"文字。
1190574-bbc60a13d344a085.png

需要說明一下的是,針對“4月13日的國務院常務會議上說”的“4”“13”比較好的查詢方式是查詢其後置字元“月”“日”對應的URL編碼“%E6%9C%88”“%E6%97%A5”,然後替換掉對應的“4”“13”為“34”“3133”等16進位制碼。替換完成後的16進位制檔案命名為“URL編碼-16進位制編碼2.txt”。

3.3 刪除全文的%

在“URL編碼-16進位制編碼2.txt”中,用UltraEdit開啟在選單"搜尋/替換",把%替換空的方式刪除掉。

1190574-6e748e07097e8f24.png

把這個檔案命名為“URL編碼-16進位制編碼-去除百分2.txt”。

【重大改進】 有朋友發現了一個新的網站工具,能夠把3.1,3.2步驟一步完成,這個就更好用了。有需要者可點選連結跳轉

3.4 交易並記錄文章

3.4.1 匯入賬號

開啟本地CHROME瀏覽器之前安裝的MetaMask外掛,匯入有至少有0.02ETH的賬號,切換到以太坊主網模式。

1190574-e1c072b5f4c04233.png

3.4.2 點選交易

複製“URL編碼-16進位制編碼-去除百分2.txt”,點選"SEND"按鈕,在彈出的介面 DATA部分拷貝後,在其頭部增加“0x”標識。
轉賬數額可以填寫很小,例如0.0001個ETH,轉賬的賬號選擇自己的地址吧。

1190574-e7f76369207ddeec.png

3.4.3 設定GAS Limit和GAS Price

點選"Next"按鈕,設定好Gas Limit引數和Gas Price引數,點選“SUMMIT”按鈕即可提交交易。


1190574-a8e740126fbb90c1.png

【說明】
Gas Limit 預設為21000,但是DATA區有資料的話,需要增加上限的。針對非零資料,一共有5857個位元組,有一個公式如下:
5857*68+21000 =419276
計算可得Gas Limit的最小資料,輝哥實際設定為419276 。
Gas Price設定為20,目前測試下來交易還是比較快的。
下面一條因為輝哥設定的Gas Limit偏小,導致失敗。第二次交易成功,對應連結為https://etherscan.io/tx/0x802a072a303a1bb19a20065a262526f2cfda0d1ea16eeb3db6500d9d06f65963,記錄在6010338區塊位置,消費輝哥約3.93美元。

1190574-88f665ab15ad4234.png

【說明】測試者如果選擇以太坊測試網路,例如“Repsten Test Network”,則不會消耗一分錢。

3.4.4 檢視文章內容

點選交易成功的區塊連結,設定"View Input As"為UTF-8,就可以看到這篇文章了。是中文的,不是亂碼,也記錄了這篇文章的原始出處。


1190574-6fa37a4bea078cdd.png

4,知識普及

4.1 區塊鏈特徵

區塊鏈其中一個特徵是資訊不可篡改,一旦資訊經過驗證並新增至區塊鏈,就會永久的儲存起來,除非能夠同時控制住系統中超過51%的節點,否則單個節點上對資料庫的修改是無效的,因此區塊鏈的資料穩定性和可靠性極高。
以太坊目前在全球有幾萬個節點,篡改或者刪除的成本極高極高。

4.2 以太坊交易的Gas和gasPrice的概念

可理解成汽油, 在以太坊上執行程式以及儲存資料都要消耗一定量的以太幣,Gas是以太幣轉換而成。這個機制用來保證效率。

油費計算
油費 = gasPrice 油價 × gasLimit 用油限制
gasCost = gasPrice * gasLimit(used gas)

注意gasLimit只是一個最大使用值,如果沒有使用完全則會退回賬戶。就像是開車去某個目的地一樣,gasPrice就是油價,油箱大小就是gasLimit,油夠,到達目的地多餘的油會留在油箱裡面,也就是轉賬成功,多餘的油費會返回賬戶。如果少了那就到達不了,意味著轉賬失敗。

貨幣單位(Ether Units):Gwei / wei / Eth之間的關係

gasPrice單位一般用 Gwei表示,三者之間的轉換關係為:

1 eth = 1e9 Gwei = 1e18 wei

【注意】1e9 代表的是10的9次方

智慧合約也是一樣的,當一個發起者部署執行一段智慧合約時,以太坊會收取gas費用,就像汽車行駛需要燒油一樣,直到你的智慧合約執行完畢,“油箱”中剩餘的gas會退還給你,如果你的程式碼死迴圈了,耗盡了你“油箱”中的gas,那麼以太坊會自動報出異常停止你的智慧合約。

需要獲取本文舉例的階段性原檔案用於測試的,加微信“PE-investor”獲取。

5,後記

區塊鏈的知識講完了。輝哥突然注意到引用正能量的這篇文章《李克強:疫苗質量安全是不可觸碰的"紅線"》的釋出時間竟然是2016年4月份啊,我還以為是今天說的呢!
哎。。。

相關文章