Fungible tokens
Giới thiệu
Vui lòng xem tiêu chuẩn kỹ thuật cho fungible token và một ví dụ implementation để tham khảo chi tiết.
Một khía cạnh đáng chú ý của tiêu chuẩn là tên method được bắt đầu bằng ft_
. Nó là một quy ước hữu ích khi tìm kiếm các transactions có liên quan đến các fungible token.
Lấy số dư
Sử dụng NEAR CLI tool, chúng ta có thể kiểm tra số dư của một account với near view
:
near view ft.demo.testnet ft_balance_of '{"account_id": "mike.testnet"}'
Trả về:
View call: ft.demo.testnet.ft_balance_of({"account_id": "mike.testnet"})
'1000000'
Một cách thay thế, bạn có thể call một contract function sử dụng query
RPC endpoint. Bên dưới là một ví dụ sử dụng HTTPie:
http post https://rpc.testnet.near.org jsonrpc=2.0 id=ftbalance method=query \
params:='{
"request_type": "call_function",
"finality": "final",
"account_id": "ft.demo.testnet",
"method_name": "ft_balance_of",
"args_base64": "eyJhY2NvdW50X2lkIjogIm1pa2UudGVzdG5ldCJ9"
}'
Trả về:
HTTP/1.1 200 OK
Alt-Svc: clear
Via: 1.1 google
access-control-allow-origin:
content-length: 176
content-type: application/json
date: Thu, 27 May 2021 12:53:38 GMT
{
"id": "dontcare",
"jsonrpc": "2.0",
"result": {
"block_hash": "3mvNHpZAsXiJ6SuHU1mbLVB4iXCfh5i5d41pnkaSoaJ5",
"block_height": 49282350,
"logs": [],
"result": [ 34, 49, 48, 48, 48, 48, 48, 48, 34 ]
}
}
Như đã nhắc trước đó, kết quả
là một mảng các byte. Có rất nhiều cách để convert các byte này thành một form human-readable như dtool CLI.
dtool a2h '[34,49,48,48,48,48,48,48,34]' | dtool h2s
Trả về:
"1000000"
Chú ý: Số dư fungible token của account mike.testnet
là 1000000
được thể hiện trong dấu nháy kép. Bởi vì nó là một vấn đề với JSON serialization. Các khoản tiền nhận được trong các tham số và các kết quả cần phải được serialize dưới dạng Base-10 string, ví dụ. "100". Điều này được thực hiện để tránh giới hạn JSON của giá trị integer tối đa là 2**53, một việc chắc chắn có thể xảy ra với các fungible tokens.
Lấy thông tin về FT
Bạn có thể lấy name
, decimals
, icon
và bất kỳ các parameter nào bằng cách gọi function:
-
using NEAR CLI:
near view <contract_account_id> ft_metadata
Kết quả:
View call: ft.demo.testnet.ft_metadata()
{
spec: 'ft-1.0.0',
name: 'Example Token Name',
symbol: 'MOCHI',
icon: null,
reference: null,
reference_hash: null,
decimals: 24
} -
với JSON RPC call:
http post https://rpc.testnet.near.org jsonrpc=2.0 id=ftmetadata method=query \
params:='{
"request_type": "call_function",
"finality": "final",
"account_id": "<contract_account_id>",
"method_name": "ft_metadata",
"args_base64": ""
}'Ví dụ về kết quả trả về:
HTTP/1.1 200 OK
Alt-Svc: clear
Via: 1.1 google
access-control-allow-origin:
content-length: 604
content-type: application/json
date: Wed, 02 Jun 2021 15:51:17 GMT
{
"id": "ftmetadata",
"jsonrpc": "2.0",
"result": {
"block_hash": "B3fu3v4dmn19B6oqjHUXN3k5NhdP9EW5kkjyuFUDpa1r",
"block_height": 50061565,
"logs": [],
"result": [ 123, 34, 115, 112, 101, 99, 34, 58, 34, 102, 116, 45, 49, 46, 48, 46, 48, 34, 44, 34, 110, 97, 109, 101, 34, 58, 34, 69, 120, 97, 109, 112, 108, 101, 32, 84, 111, 107, 101, 110, 32, 78, 97, 109, 101, 34, 44, 34, 115, 121, 109, 98, 111, 108, 34, 58, 34, 77, 79, 67, 72, 73, 34, 44, 34, 105, 99, 111, 110, 34, 58, 110, 117, 108, 108, 44, 34, 114, 101, 102, 101, 114, 101, 110, 99, 101, 34, 58, 110, 117, 108, 108, 44, 34, 114, 101, 102, 101, 114, 101, 110, 99, 101, 95, 104, 97, 115, 104, 34, 58, 110, 117, 108, 108, 44, 34, 100, 101, 99, 105, 109, 97, 108, 115, 34, 58, 50, 52, 125 ]
}
}