
分散式出版實踐者 網誌:bchai.cc
如何一口氣註冊《唐詩三百首》到區塊鏈
事前準備
- 可以處理 CSV 檔案的工具,推薦免費的 Google spreadsheet。將要註冊的資料以 CSV 格式整理好。
- 一台 Linux 或 Mac 電腦。Windows 也行但我沒有經驗,另請其他高手寫文指教。電腦需已安裝 node.js 及 git 的最新版本。下文會以 Mac 為例。
- 一個已有少量 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 文件夾中去。

步驟五:執行程式
一切就緒了。在 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 能查到李白的《將進酒》:

你也可以剛才用作批量註冊的那 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 上建個端點星吧。
Like my work?
Don't forget to support or like, so I know you are with me..
Comment…