黃牛山人
黃牛山人

分散式出版實踐者 網誌:bchai.cc

如何一口氣註冊《唐詩三百首》到區塊鏈

本篇教大家如何一次過為大量資料註冊 ISCN,程序含少量技術,但不用害怕,只要跟著一步步做便好,過程一定比填寫政府的稅單容易。

事前準備

  1. 可以處理 CSV 檔案的工具,推薦免費的 Google spreadsheet。將要註冊的資料以 CSV 格式整理好。
  2. 一台 Linux 或 Mac 電腦。Windows 也行但我沒有經驗,另請其他高手寫文指教。電腦需已安裝 node.js 及 git 的最新版本。下文會以 Mac 為例。
  3. 一個已有少量 LikeCoin 的錢包。這錢包需以 Keplr 註冊,因為必須用到這錢包的助記詞 (seed words)。LikeCoin 將要用作註冊 ISCN 的費用,現在註冊費便宜到不得了,肯定很快要漲價,想盡情試便要趁現在了。

步驟一:資料整理

這雖是完全不含技術的步驟,但也有幾個重點要注意,而且很花時間和心力。先看看《唐詩三百首》CSV 資料檔案的例子。

按 ISCN 格式要求,上傳的資料欄位應盡量按 schema.org 中的 CreativeWork 類別定義,所以第一步我們先要把 CSV 檔的欄位名稱定好。

以下是我轉換後的定義 (原欄名 > CreativeWork 欄名):

  • ID > identifier
  • 作者 > author
  • 標題 > name
  • 體裁 > genre
  • 詩文 > text
  • 網址 > url
  • 授權方式 > usageinfo

留意以下三個欄位不在 CreativeWork 定義中,而是上傳 ISCN 的 script 工具 iscn-batch-uploader 所需要的。下文我再來講解如何使用這工具,現在先看欄位定義:

  • ipfsHash: iscn-batch-uploader 會把這欄位中的 hash 填在 ISCN 的「內容指紋」欄 (content fingerprint)
  • type: 這是 schema.org 中的類別,type 可以是 CreativeWork, Book, Game, Painting, Article, Photograph, Episode 等等。若 CSV 內沒有這欄,默認便會填上 CreativeWork

像《唐詩三百首》這種較短的內容,把內文全部以 text 欄位寫進 LikeCoin chain 成本也不高;但為了演示實際用途我還是把每篇唐詩都另儲成一個 txt 檔案,批量上傳到 pinata 這 IPFS pinning service 平台,再把回傳的 hash 填在每筆唐詩的對應記錄中。這樣註冊的 ISCN 便會有「內容指紋」資料。期待 iscn-batch-uploader 將來能支援 Arweave 連結的欄位,但目前暫未支援。

你立時會碰到一個難題:上傳資料到 IPFS ,再獲得 ipfsHash 作內容指紋這工序如何有效率地做?遺憾地 iscn-batch-uploader 並沒有幫你解決這問題。若你不懂寫代碼,便恐怕要逐個逐個檔案上傳再抄下 hash,這痛苦的手動程序絕對不適合用作處理大量資料。非技術朋友建議別急著處理內容指紋這欄位,先把內容元資料 (metadata) 註冊並拿到 ISCN 編號,因為 iscn-batch-uploader 工具支援更新現有 ISCN 記錄。日後待資料齊全了,再一口氣把內容指紋更新上區塊鏈不遲。

若你是懂技術的朋友,小弟寫了整合 pinata 的 python 小工具。歡迎隨便使用,或提交修改建議。

《唐詩三百首》只有 300 多筆記錄,然而就算處理上百萬條記錄,也可用完全相同的方法。你大可以把整本《聖經》、莎翁的劇本、自己的所有文章、某些歌曲的樂譜、某份報紙的備份、機構的會議記錄等,也用如此方式批量註冊到區塊鏈。整理資料的工序絕對是非技術人能發揮的巨大舞台。


步驟二:安裝 iscn-batch-uploader

git clone https://github.com/likecoin/iscn-batch-uploader.git

電腦已安裝 git 的朋友,只需建個文件夾再輸入上面那個指令,便能把 iscn-batch-uploader 文件夾下載了。沒有安裝 git 的朋友可以直接從 GitHub 下載 zip 檔。(點右上 "Code" 綠色按鍵),解壓獲得 iscn-batch-uploader 文件夾。

打開 terminal 終端,cd 到 iscn-batch-uploader 文件夾,然後輸入以下指令:

npm install

這指令會令程式庫就緒。


步驟三:修改設定

成功下載後,在 iscn-batch-uploader 文件夾中有個 config 文件夾,裡面有個 config.js 文件。用任何文字編輯器打開它,在 config.COSMOS_MNEMONIC 那一列填上你 LikeCoin 錢包的助記詞,例如:

config.COSMOS_MNEMONIC = 'paint man cloud google winnie pool think hell imposition police illegal tyranny';


步驟四:複製 CSV 檔到執行目錄

把《唐詩三百首》的 CSV 檔,或任何你想註冊 ISCN 的 CSV 資料檔 copy 到 iscn-batch-uploader 文件夾中去。

資料檔置於 iscn-batch-uplader 文件夾中

步驟五:執行程式

一切就緒了。在 Terminal 終端,確認 iscn-batch-uploader 是當前文件夾,然後輸入以下指令:

node index.js [your csv filename] 

[your csv file name] 是你的資料檔名,以《唐詩三百首》範例資料檔為例,指令就是

node index.js TangPoems300.csv

你沒有看錯,註冊三百多筆 ISCN,也不用花 1 LIKE!趁還沒加價快試試看吧。


步驟六:檢查結果

程式成功執行後,在 iscn-batch-uploader 文件夾會多了一個 "output.csv" 檔案,跟原資料檔案比較增加了兩個欄位: txHash 及 iscnId。

txHash 是 LikeCoin chain 上的交易記錄編號,你可在 Big Dipper 或 stake.like.co 等區塊瀏覽器中查找這串編碼以檢視該筆記錄,例如你可在 Big Dipper 中輸入這個 TX hash: C75B2BD9C79A83670C49F97522E7670CBB7E4892CAC26D5F09E5913C57870E5C

打開 "Raw" 選項,可看到詳細的 ISCN 註冊資料記錄。

另外,iscnId 則是這筆內容的 ISCN 編號,你可在 app.like.co 查詢這編號,例如輸入 iscn://likecoin-chain/9MewrmZqHT55nJLtW7EGqo8szOwKtp42AmhKyhWrImw/1 能查到李白的《將進酒》:

李白《將進酒》 ISCN ID iscn://likecoin-chain/9MewrmZqHT55nJLtW7EGqo8szOwKtp42AmhKyhWrImw

你也可以剛才用作批量註冊的那 LikeCoin 錢包登入 app.like.co,點 "Your Publishing" 能查到經 iscn-batch-uploader 註冊的內容,可是目前只能查到首 100 筆記錄。


進階用法:內容版本更新

iscn-batch-uploader 工具支援內容版本更新,用法是:

  • 在 CSV 中把內容改動整理好,留意要完整地填滿所有欄位的內容,就算欄位內容沒有改動也要照填上。
  • 再跑 index.js 一次,但加上 --update 參數,例如:
node index.js TangPoems300A.csv --update

這樣當程序讀到已存在的 ISCN 記錄時,會更新區塊鏈上同一筆 ISCN 記錄而不是註冊一筆新的。新版本號會在 ISCN ID 最尾的字段反映,例如 /1 代表 version 1,/2 代表 version 2。若在 app.like.co 輸入 ISCN ID 查詢時忽略最後的版本號,系統會默認回傳最新版本。


問題:註冊失敗怎麼辦?

跑 iscn-batch-uploader 時偶爾會因不明原因,在註冊某筆記錄時回傳失敗。這時程式會嘗試稍候再重新註冊,若仍然失敗便會跳過當前那筆記錄,註冊下一筆。你可以檢查 output.csv 看看是否所有記錄都有 iscnId,確認有沒有漏掉註冊。

若真的有漏了,最便捷的方法是直接把 output.csv 改個檔名,然後用作 input file 參數重新跑一遍 index.js,例如:

node index.js fromOutputFile.csv

若沒加上 --update 參數,程式會自動跳過已有 iscnId 的記錄,只執行漏掉註冊的記錄。


申請 LikeCoin grant 用作資料整理

有興趣整理各式經典資料,並把內容註冊 ISCN 的朋友,很快可以申請 LikeCoin grant 資助你的工作了。申請方式仍未公佈,詳情請留意 LikeCoin grant notion 主頁的更新。

讓我們在 LikeCoin chain 上建個端點星吧。

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…
加载中…

发布评论