摘要:官網(wǎng)上的說法感覺容易產(chǎn)生誤解。上述三個(gè)鏈或者網(wǎng)完全隔離。目前我申請了兩個(gè)賬戶,并且空投了一些測試鏈的。初始化客戶端一切準(zhǔn)備就緒,我們要實(shí)現(xiàn)轉(zhuǎn)賬,我們需要獲取一個(gè)客戶端。后記轉(zhuǎn)賬操作相關(guān)的內(nèi)容就介紹完了。
FO 是官方在 FibOS 發(fā)行的數(shù)字貨幣,也在多個(gè)交易所上交易,作者在寫文章的時(shí)候,大概報(bào)價(jià)是 0.05 元。官方也推出了一個(gè)簡潔易用的錢包 APP 供大家管理自己的 FO 資產(chǎn),有興趣的同學(xué)也可以下載使用(https://wallet.fo/zh-cn)。有 FO 賬戶還沒有 FO 的小伙伴不妨留下 FO 賬戶,說不定我會(huì)抽幾個(gè)給大家打 FO 呢。
但是怎么打 FO 呢,很簡單,大家可以 FO 錢包 APP 中點(diǎn)擊轉(zhuǎn)帳,輸入收款賬戶和轉(zhuǎn)賬數(shù)量后點(diǎn)確定一氣呵成。
但是例如我們在一些需要大批量轉(zhuǎn)賬或自動(dòng)化轉(zhuǎn)賬的情況下,我們?nèi)绾瓮ㄟ^代碼實(shí)現(xiàn)呢?接下來我?guī)ьI(lǐng)大家一起來體驗(yàn)一下:
1. 創(chuàng)建項(xiàng)目我們創(chuàng)建一個(gè)文件夾叫 transfer,并且進(jìn)入該文件夾:
mkdir transfer cd transfer
初始化項(xiàng)目。我們可以執(zhí)行 fibos 命令是因?yàn)槲覀円呀?jīng)安裝了 fibos 命令行工具。如果不清楚如何安裝的可以閱讀我本專欄的前一篇文章。
fibos --init
安裝 fibos 依賴包。這里可以 使用 fibos 安裝也可以選擇 npm 命令安裝。當(dāng)然如果您安裝特別慢,可以使用 cnpm 或者淘寶 npm 鏡像。
fibos --install fibos.js
到此為止,準(zhǔn)備工作就做完了。此時(shí)你的 transfer 文件夾的目錄結(jié)構(gòu)是這樣的:
. ├── node_modules └── package.json2. 主網(wǎng)和測試網(wǎng)介紹
這里需要解釋一下的是,我們在開發(fā)過程中經(jīng)常碰到的鏈主要有三類:
主鏈/主網(wǎng)(Main Chain / Main Net),是由 21 個(gè)投票當(dāng)選的節(jié)點(diǎn)負(fù)責(zé)出塊。我們上述說到的價(jià)值 0.05 的 FO 就記錄在主鏈上。
測試鏈/測試網(wǎng) (Test Chain / Test Chain),測試鏈運(yùn)行著跟主鏈一模一樣的機(jī)制,就是大家都知道這是一條開發(fā)用來測試的鏈,上面的 FO 并沒有價(jià)值。
本地鏈/本地網(wǎng)。這個(gè)是我生造的一個(gè)詞。根據(jù)官網(wǎng):https://dev.fo/zh-cn/guide/tu... 的介紹應(yīng)該是在本地生成一個(gè)鏈或者網(wǎng),只是只有你一個(gè)節(jié)點(diǎn)。官網(wǎng)上的說法感覺容易產(chǎn)生誤解。
上述三個(gè)鏈或者網(wǎng)完全隔離。大家不要搞混了。
主鏈:
ID:6aa7bd33b6b45192465afa3553dedb531acaaff8928cf64b70bd4c5e49b7ec6a EndPoint: http://api.fibos.me # 當(dāng)然還有其他,可以在官方文檔中查詢:節(jié)點(diǎn)介紹 — Dev.fo
測試鏈:
ID:68cee14f598d88d340b50940b6ddfba28c444b46cd5f33201ace82c78896793a EndPoint:http://api.testnet.fo 這里我們?yōu)榱丝焖匍_始,建議使用測試網(wǎng)絡(luò),減少工作量和不必要的坑打擊積極性。
我們可以在測試網(wǎng)的網(wǎng)站上創(chuàng)建幾個(gè)測試賬戶并給幾個(gè)賬戶空投幾個(gè) FO,創(chuàng)建方法:
進(jìn)入http://api.testnet.fo/account,點(diǎn)擊隨機(jī)賬戶隨機(jī)密鑰,記錄你的賬戶、私鑰和公鑰匙,點(diǎn)擊創(chuàng)建
進(jìn)入 http://api.testnet.fo/reward,輸入你剛才創(chuàng)建的賬戶名稱,點(diǎn)擊獲取獎(jiǎng)勵(lì)。
目前我申請了兩個(gè)賬戶,并且空投了一些測試鏈的 FO。分別是:
賬戶: gtcmpcrcm2h5 私鑰: 5JVtt2nHcr52xfULsRCAKGAFDuCazWs5Z1RcvZmerE8W3Fr66UL 公鑰: FO7zZJJdfTvGKpdudAcYQp1y97wP9cC9vG2McmeWzvgLWVnkVy9m 賬戶: cmvdkvfgedjg 私鑰: 5JBoQimR9kDB4922S7BaDjQnm8zaD5D2qNXRbbVKZryRCdUxhfc 公鑰: FO7wwaYC7r1z1sP7xyBBa9prEt7dFNoMXY9ZMREEyRUYxKgx4KD4
?? 注意:此處是測試鏈,且為了方便大家才列在這里。千萬千萬不要在任何地方泄露你的私鑰,泄露代表資產(chǎn)丟失。
3. 初始化客戶端一切準(zhǔn)備就緒,我們要實(shí)現(xiàn)轉(zhuǎn)賬,我們需要獲取一個(gè)客戶端。我們在目錄下創(chuàng)建一個(gè) 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 即為接入點(diǎn),也是測試鏈的接入點(diǎn)。_keyProvider 為要?jiǎng)?chuàng)建 Client 的那個(gè)賬戶的私鑰,我們后續(xù)會(huì)以參數(shù)的形式傳入。
此時(shí)目錄結(jié)構(gòu)為:
. ├── initClient.js ├── node_modules └── package.json4. 轉(zhuǎn)帳
我們在目錄中新建一個(gè) transfer.js 文件,在文件中編碼:
var FIBOS = require("./initClient.js") var config = { "public-key": "FO7zZJJdfTvGKpdudAcYQp1y97wP9cC9vG2McmeWzvgLWVnkVy9m", // FO 轉(zhuǎn)出方私鑰 "private-key": "5JVtt2nHcr52xfULsRCAKGAFDuCazWs5Z1RcvZmerE8W3Fr66UL" // FO 轉(zhuǎn)入方私鑰 }; console.log(config["private-key"]) var fibos = FIBOS(config["private-key"]); let ctx = fibos.contractSync("eosio.token"); var r = ctx.transferSync( "gtcmpcrcm2h5", // FO 轉(zhuǎn)出方 "cmvdkvfgedjg", // FO 轉(zhuǎn)入方 "0.1000 FO", // FO數(shù)量 "Hello Fibos", // 附言 { authorization: "gtcmpcrcm2h5" // FO 轉(zhuǎn)出方賬戶 }); console.log(r);
此時(shí)目錄結(jié)構(gòu)為:
. ├── initClient.js ├── node_modules ├── package.json └── transfer.js
執(zhí)行以下命令進(jìn)行轉(zhuǎn)賬:
fibos transfer.js
成功后會(huì)輸出這次轉(zhuǎn)賬的詳情:
{ "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. 常見錯(cuò)誤
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 轉(zhuǎn)出方的。這里官網(wǎng)的示例代碼注釋寫錯(cuò)了: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 的精度錯(cuò)誤,F(xiàn)O 數(shù)量一定要寫四位小數(shù)。多了少了都會(huì)報(bào)這個(gè)錯(cuò)誤。
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)
這個(gè)使用錯(cuò)了 transfer 和 extransfer 函數(shù)。其中 transfer 函數(shù)表示的是與 EOS 主網(wǎng)兼容的轉(zhuǎn)賬方法,函數(shù)原型為:
其中 transfer 函數(shù)表示的是與 EOS 主網(wǎng)兼容的轉(zhuǎn)賬方法,函數(shù)原型為:
void transfer(account_name from, account_name to, asset quantity, string memo)
示例:
transfer("accountfrom", "accountto", "1.0000 FO", "memo field")
其中 extransfer 函數(shù)表示的是與 FIBOS 主網(wǎng)擴(kuò)展的轉(zhuǎn)賬方法,該方法支持在 FIBOS 上發(fā)行的所有通證的轉(zhuǎn)賬,函數(shù)原型為:
void extransfer(account_name from, account_name to, extended_asset quantity, string memo)
示例:
extransfer("accountfrom", "accountto", "1.0000 FO@eosio", "memo field")
其中,@ 字符后表示的是該通證的發(fā)行方,系統(tǒng)通證 FO 為 FO@eosio,eosio 表示的是該通證是系統(tǒng)原生發(fā)行的通證。
6. 后記轉(zhuǎn)賬操作相關(guān)的內(nèi)容就介紹完了。有什么問題留言。也可以在知乎上關(guān)注我:https://zhuanlan.zhihu.com/p/...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/105302.html
摘要:編寫合約的智能合約分為文件和合約兩部分。相當(dāng)于合約接口,合約則是功能實(shí)現(xiàn)。用戶賬戶金額內(nèi)容提供者賬戶金額平臺(tái)合約賬戶金額結(jié)果顯示,分賬賬戶和平臺(tái)合約賬戶如預(yù)期那樣獲得和。綜上,我們成功使用了智能合約實(shí)現(xiàn)了自動(dòng)分賬。 自動(dòng)分賬是很多平臺(tái)都會(huì)用到的支付功能。很多互聯(lián)網(wǎng)內(nèi)容售賣平臺(tái)都會(huì)跟內(nèi)容提供者分賬。比如:Apple 的 App Store 跟 App 開發(fā)者三七分成。很多平臺(tái)都使用了支付...
摘要:編寫合約的智能合約分為文件和合約兩部分。相當(dāng)于合約接口,合約則是功能實(shí)現(xiàn)。用戶賬戶金額內(nèi)容提供者賬戶金額平臺(tái)合約賬戶金額結(jié)果顯示,分賬賬戶和平臺(tái)合約賬戶如預(yù)期那樣獲得和。綜上,我們成功使用了智能合約實(shí)現(xiàn)了自動(dòng)分賬。 自動(dòng)分賬是很多平臺(tái)都會(huì)用到的支付功能。很多互聯(lián)網(wǎng)內(nèi)容售賣平臺(tái)都會(huì)跟內(nèi)容提供者分賬。比如:Apple 的 App Store 跟 App 開發(fā)者三七分成。很多平臺(tái)都使用了支付...
摘要:上周的錢包上線最新版本,快來看看有哪些變化吧。未來的錢包不僅可以用來兌換或者進(jìn)行的轉(zhuǎn)賬交易,而且可以通過實(shí)現(xiàn)更多的應(yīng)用。如果把這個(gè)確認(rèn)的時(shí)間砍掉的話,可能會(huì)存在資產(chǎn)分叉的風(fēng)險(xiǎn)。 上周 FIBOS 的 FO 錢包上線最新版本,快來看看有哪些變化吧。 一.視覺上的優(yōu)化升以及首頁快捷操作的刪減和添加 最初 FO 錢包上線的時(shí)候,因?yàn)橐?FIBOS 同步,有些設(shè)計(jì)細(xì)節(jié)沒有打磨好,而這次的新版...
摘要:上周的錢包上線最新版本,快來看看有哪些變化吧。未來的錢包不僅可以用來兌換或者進(jìn)行的轉(zhuǎn)賬交易,而且可以通過實(shí)現(xiàn)更多的應(yīng)用。如果把這個(gè)確認(rèn)的時(shí)間砍掉的話,可能會(huì)存在資產(chǎn)分叉的風(fēng)險(xiǎn)。 上周 FIBOS 的 FO 錢包上線最新版本,快來看看有哪些變化吧。 一.視覺上的優(yōu)化升以及首頁快捷操作的刪減和添加 最初 FO 錢包上線的時(shí)候,因?yàn)橐?FIBOS 同步,有些設(shè)計(jì)細(xì)節(jié)沒有打磨好,而這次的新版...
摘要:據(jù)中國防偽材料市場分析報(bào)告統(tǒng)計(jì),全世界受假冒偽劣產(chǎn)品影響的市場金額達(dá)到了億美元。區(qū)塊鏈在食品領(lǐng)域的應(yīng)用還有家樂福,年月日,家樂福正式對外宣布,家樂福中國首個(gè)區(qū)塊鏈應(yīng)用落地,上鏈的首個(gè)家優(yōu)鮮產(chǎn)品琯溪蜜柚今天正式上市。 在去年的 10 月, FIBOS 舉辦的第一季「一念巨浪」DAPP 大賽圓滿結(jié)束。大賽共收到 80 多個(gè)項(xiàng)目咨詢,其中 62 個(gè)項(xiàng)目報(bào)名成功,最終 29 個(gè)項(xiàng)目入圍進(jìn)行最后...
閱讀 2694·2021-11-08 13:16
閱讀 2373·2021-10-18 13:30
閱讀 2241·2021-09-27 13:35
閱讀 1997·2019-08-30 15:55
閱讀 2446·2019-08-30 13:22
閱讀 587·2019-08-30 11:24
閱讀 2083·2019-08-29 12:33
閱讀 1817·2019-08-26 12:10