摘要:官網上的說法感覺容易產生誤解。上述三個鏈或者網完全隔離。目前我申請了兩個賬戶,并且空投了一些測試鏈的。初始化客戶端一切準備就緒,我們要實現轉賬,我們需要獲取一個客戶端。后記轉賬操作相關的內容就介紹完了。
FO 是官方在 FibOS 發行的數字貨幣,也在多個交易所上交易,作者在寫文章的時候,大概報價是 0.05 元。官方也推出了一個簡潔易用的錢包 APP 供大家管理自己的 FO 資產,有興趣的同學也可以下載使用(https://wallet.fo/zh-cn)。有 FO 賬戶還沒有 FO 的小伙伴不妨留下 FO 賬戶,說不定我會抽幾個給大家打 FO 呢。
但是怎么打 FO 呢,很簡單,大家可以 FO 錢包 APP 中點擊轉帳,輸入收款賬戶和轉賬數量后點確定一氣呵成。
但是例如我們在一些需要大批量轉賬或自動化轉賬的情況下,我們如何通過代碼實現呢?接下來我帶領大家一起來體驗一下:
1. 創建項目我們創建一個文件夾叫 transfer,并且進入該文件夾:
mkdir transfer cd transfer
初始化項目。我們可以執行 fibos 命令是因為我們已經安裝了 fibos 命令行工具。如果不清楚如何安裝的可以閱讀我本專欄的前一篇文章。
fibos --init
安裝 fibos 依賴包。這里可以 使用 fibos 安裝也可以選擇 npm 命令安裝。當然如果您安裝特別慢,可以使用 cnpm 或者淘寶 npm 鏡像。
fibos --install fibos.js
到此為止,準備工作就做完了。此時你的 transfer 文件夾的目錄結構是這樣的:
. ├── node_modules └── package.json2. 主網和測試網介紹
這里需要解釋一下的是,我們在開發過程中經常碰到的鏈主要有三類:
主鏈/主網(Main Chain / Main Net),是由 21 個投票當選的節點負責出塊。我們上述說到的價值 0.05 的 FO 就記錄在主鏈上。
測試鏈/測試網 (Test Chain / Test Chain),測試鏈運行著跟主鏈一模一樣的機制,就是大家都知道這是一條開發用來測試的鏈,上面的 FO 并沒有價值。
本地鏈/本地網。這個是我生造的一個詞。根據官網:https://dev.fo/zh-cn/guide/tu... 的介紹應該是在本地生成一個鏈或者網,只是只有你一個節點。官網上的說法感覺容易產生誤解。
上述三個鏈或者網完全隔離。大家不要搞混了。
主鏈:
ID:6aa7bd33b6b45192465afa3553dedb531acaaff8928cf64b70bd4c5e49b7ec6a EndPoint: http://api.fibos.me # 當然還有其他,可以在官方文檔中查詢:節點介紹 — Dev.fo
測試鏈:
ID:68cee14f598d88d340b50940b6ddfba28c444b46cd5f33201ace82c78896793a EndPoint:http://api.testnet.fo 這里我們為了快速開始,建議使用測試網絡,減少工作量和不必要的坑打擊積極性。
我們可以在測試網的網站上創建幾個測試賬戶并給幾個賬戶空投幾個 FO,創建方法:
進入http://api.testnet.fo/account,點擊隨機賬戶隨機密鑰,記錄你的賬戶、私鑰和公鑰匙,點擊創建
進入 http://api.testnet.fo/reward,輸入你剛才創建的賬戶名稱,點擊獲取獎勵。
目前我申請了兩個賬戶,并且空投了一些測試鏈的 FO。分別是:
賬戶: gtcmpcrcm2h5 私鑰: 5JVtt2nHcr52xfULsRCAKGAFDuCazWs5Z1RcvZmerE8W3Fr66UL 公鑰: FO7zZJJdfTvGKpdudAcYQp1y97wP9cC9vG2McmeWzvgLWVnkVy9m 賬戶: cmvdkvfgedjg 私鑰: 5JBoQimR9kDB4922S7BaDjQnm8zaD5D2qNXRbbVKZryRCdUxhfc 公鑰: FO7wwaYC7r1z1sP7xyBBa9prEt7dFNoMXY9ZMREEyRUYxKgx4KD4
?? 注意:此處是測試鏈,且為了方便大家才列在這里。千萬千萬不要在任何地方泄露你的私鑰,泄露代表資產丟失。
3. 初始化客戶端一切準備就緒,我們要實現轉賬,我們需要獲取一個客戶端。我們在目錄下創建一個 initClien.js 文件,編寫以下代碼:
var FIBOS = require("fibos.js"); function initClient(_keyProvider) { return FIBOS({ chainId: "68cee14f598d88d340b50940b6ddfba28c444b46cd5f33201ace82c78896793a", keyProvider: _keyProvider, httpEndpoint: "http://api.testnet.fo", logger: { log: null, error: null } }); } module.exports = initClient;
其中 chainId 即鏈的 ID,這里我們接入測試鏈,所以輸入的是測試鏈的 ID。httpEndpoint 即為接入點,也是測試鏈的接入點。_keyProvider 為要創建 Client 的那個賬戶的私鑰,我們后續會以參數的形式傳入。
此時目錄結構為:
. ├── initClient.js ├── node_modules └── package.json4. 轉帳
我們在目錄中新建一個 transfer.js 文件,在文件中編碼:
var FIBOS = require("./initClient.js") var config = { "public-key": "FO7zZJJdfTvGKpdudAcYQp1y97wP9cC9vG2McmeWzvgLWVnkVy9m", // FO 轉出方私鑰 "private-key": "5JVtt2nHcr52xfULsRCAKGAFDuCazWs5Z1RcvZmerE8W3Fr66UL" // FO 轉入方私鑰 }; console.log(config["private-key"]) var fibos = FIBOS(config["private-key"]); let ctx = fibos.contractSync("eosio.token"); var r = ctx.transferSync( "gtcmpcrcm2h5", // FO 轉出方 "cmvdkvfgedjg", // FO 轉入方 "0.1000 FO", // FO數量 "Hello Fibos", // 附言 { authorization: "gtcmpcrcm2h5" // FO 轉出方賬戶 }); console.log(r);
此時目錄結構為:
. ├── initClient.js ├── node_modules ├── package.json └── transfer.js
執行以下命令進行轉賬:
fibos transfer.js
成功后會輸出這次轉賬的詳情:
{ "broadcast": true, "transaction": { "compression": "none", "transaction": { "expiration": "2019-07-03T11:49:58", "ref_block_num": 52798, "ref_block_prefix": 459488456, "max_net_usage_words": 0, "max_cpu_usage_ms": 0, "delay_sec": 0, "context_free_actions": [], "actions": [ { "account": "eosio.token", "name": "transfer", "authorization": [ { "actor": "gtcmpcrcm2h5", "permission": "active" } ], "data": "509a90e8a22a5166c05e526c6d98b644e80300000000000004464f00000000000b48656c6c6f204669626f73" } ], "transaction_extensions": [] }, "signatures": [ "SIG_K1_K46edAAzozP1bThRBGnkNX5M11z4kVBzAAt4qrLZfFVcqaUBhsww3rBdiYgxvhdy3K39bZso1uZGMTp6PEMiQQiDWZATnx" ] }, "transaction_id": "5dc6a856f8821a395993a083945e919eb19c0dc277c2a88e60ea31655cc07fba", "processed": { ... }5. 常見錯誤
Provided keys, permissions, and delays do not satisfy declared authorizations
{
"code":500, "message":"Internal Service Error", "error":{ "code":3090003, "name":"unsatisfied_authorization", "what":"Provided keys, permissions, and delays do not satisfy declared authorizations", "details":[ { "message":"transaction declares authority "{"actor":"cmvdkvfgedjg","permission":"active"}", but does not have signatures for it under a provided delay of 0 ms, provided permissions [], provided keys ["FO7zZJJdfTvGKpdudAcYQp1y97wP9cC9vG2McmeWzvgLWVnkVy9m"], and a delay max limit of 3888000000 ms", "file":"authorization_manager.cpp", "line_number":520, "method":"check_authorization" } ] }
}
檢查 transfer.js 文件中的公鑰、私鑰和 authorization 是否正確,而且都是 FO 轉出方的。這里官網的示例代碼注釋寫錯了:https://dev.fo/zh-cn/guide/to...
symbol precision mismatch
{ "code":500, "message":"Internal Service Error", "error":{ "code":3050003, "name":"eosio_assert_message_exception", "what":"eosio_assert_message assertion failure", "details":[ { "message":"assertion failure with message: symbol precision mismatch", "file":"wasm_interface.cpp", "line_number":924, "method":"eosio_assert" }, { "message":"pending console output: ", "file":"apply_context.cpp", "line_number":72, "method":"exec_one" } ] } }
FO 的精度錯誤,FO 數量一定要寫四位小數。多了少了都會報這個錯誤。
missing contract /Users/charlie/Code/fibos/transfer/node_modules/_eosjs@16.0.2@eosjs/lib/structs.js:546:7 assert(contract != null, "missing contract"); ^ Error: missing contract extransfer.quantity action.data transaction.actions at Object.fromObject (/Users/charlie/Code/fibos/transfer/node_modules/_eosjs@16.0.2@eosjs/lib/structs.js:546:7) at Object.fromObject (/Users/charlie/Code/fibos/transfer/node_modules/_fcbuffer@2.2.0@fcbuffer/lib/struct.js:151:34) at actionDataFromObject (/Users/charlie/Code/fibos/transfer/node_modules/_eosjs@16.0.2@eosjs/lib/structs.js:753:29) at Object.fromObject (/Users/charlie/Code/fibos/transfer/node_modules/_fcbuffer@2.2.0@fcbuffer/lib/struct.js:148:15) at Object.fromObject (/Users/charlie/Code/fibos/transfer/node_modules/_fcbuffer@2.2.0@fcbuffer/lib/types.js:384:28) at Object.fromObject (/Users/charlie/Code/fibos/transfer/node_modules/_fcbuffer@2.2.0@fcbuffer/lib/struct.js:151:34) at _callee2$ (/Users/charlie/Code/fibos/transfer/node_modules/_eosjs@16.0.2@eosjs/lib/write-api.js:657:38) at tryCatch (/Users/charlie/Code/fibos/transfer/node_modules/_regenerator-runtime@0.11.1@regenerator-runtime/runtime.js:62:40) at Generator.invoke [as _invoke] (/Users/charlie/Code/fibos/transfer/node_modules/_regenerator-runtime@0.11.1@regenerator-runtime/runtime.js:296:22) at Generator.forEach.prototype.(anonymous function) [as next] (/Users/charlie/Code/fibos/transfer/node_modules/_regenerator-runtime@0.11.1@regenerator-runtime/runtime.js:114:21)
這個使用錯了 transfer 和 extransfer 函數。其中 transfer 函數表示的是與 EOS 主網兼容的轉賬方法,函數原型為:
其中 transfer 函數表示的是與 EOS 主網兼容的轉賬方法,函數原型為:
void transfer(account_name from, account_name to, asset quantity, string memo)
示例:
transfer("accountfrom", "accountto", "1.0000 FO", "memo field")
其中 extransfer 函數表示的是與 FIBOS 主網擴展的轉賬方法,該方法支持在 FIBOS 上發行的所有通證的轉賬,函數原型為:
void extransfer(account_name from, account_name to, extended_asset quantity, string memo)
示例:
extransfer("accountfrom", "accountto", "1.0000 FO@eosio", "memo field")
其中,@ 字符后表示的是該通證的發行方,系統通證 FO 為 FO@eosio,eosio 表示的是該通證是系統原生發行的通證。
6. 后記轉賬操作相關的內容就介紹完了。有什么問題留言。也可以在知乎上關注我:https://zhuanlan.zhihu.com/p/...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/105302.html
摘要:編寫合約的智能合約分為文件和合約兩部分。相當于合約接口,合約則是功能實現。用戶賬戶金額內容提供者賬戶金額平臺合約賬戶金額結果顯示,分賬賬戶和平臺合約賬戶如預期那樣獲得和。綜上,我們成功使用了智能合約實現了自動分賬。 自動分賬是很多平臺都會用到的支付功能。很多互聯網內容售賣平臺都會跟內容提供者分賬。比如:Apple 的 App Store 跟 App 開發者三七分成。很多平臺都使用了支付...
摘要:編寫合約的智能合約分為文件和合約兩部分。相當于合約接口,合約則是功能實現。用戶賬戶金額內容提供者賬戶金額平臺合約賬戶金額結果顯示,分賬賬戶和平臺合約賬戶如預期那樣獲得和。綜上,我們成功使用了智能合約實現了自動分賬。 自動分賬是很多平臺都會用到的支付功能。很多互聯網內容售賣平臺都會跟內容提供者分賬。比如:Apple 的 App Store 跟 App 開發者三七分成。很多平臺都使用了支付...
摘要:上周的錢包上線最新版本,快來看看有哪些變化吧。未來的錢包不僅可以用來兌換或者進行的轉賬交易,而且可以通過實現更多的應用。如果把這個確認的時間砍掉的話,可能會存在資產分叉的風險。 上周 FIBOS 的 FO 錢包上線最新版本,快來看看有哪些變化吧。 一.視覺上的優化升以及首頁快捷操作的刪減和添加 最初 FO 錢包上線的時候,因為要和 FIBOS 同步,有些設計細節沒有打磨好,而這次的新版...
摘要:上周的錢包上線最新版本,快來看看有哪些變化吧。未來的錢包不僅可以用來兌換或者進行的轉賬交易,而且可以通過實現更多的應用。如果把這個確認的時間砍掉的話,可能會存在資產分叉的風險。 上周 FIBOS 的 FO 錢包上線最新版本,快來看看有哪些變化吧。 一.視覺上的優化升以及首頁快捷操作的刪減和添加 最初 FO 錢包上線的時候,因為要和 FIBOS 同步,有些設計細節沒有打磨好,而這次的新版...
摘要:據中國防偽材料市場分析報告統計,全世界受假冒偽劣產品影響的市場金額達到了億美元。區塊鏈在食品領域的應用還有家樂福,年月日,家樂福正式對外宣布,家樂福中國首個區塊鏈應用落地,上鏈的首個家優鮮產品琯溪蜜柚今天正式上市。 在去年的 10 月, FIBOS 舉辦的第一季「一念巨浪」DAPP 大賽圓滿結束。大賽共收到 80 多個項目咨詢,其中 62 個項目報名成功,最終 29 個項目入圍進行最后...
閱讀 2702·2021-11-08 13:16
閱讀 2380·2021-10-18 13:30
閱讀 2252·2021-09-27 13:35
閱讀 2005·2019-08-30 15:55
閱讀 2455·2019-08-30 13:22
閱讀 596·2019-08-30 11:24
閱讀 2089·2019-08-29 12:33
閱讀 1823·2019-08-26 12:10