VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.008USD
STEEM
0.016STEEM
SBD
0.000SBD
Effective Power
5.008SP
├── Own SP
0.124SP
└── Incoming DelegationsDeleg
+4.883SP
Detailed Balance
| STEEM | ||
| balance | 0.016STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 0.124SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 4.883SP | SP |
| Effective Power | 5.008SP | SP |
| Reward SP (pending) | 0.000SP | SP |
| SBD | ||
| sbd_balance | 0.000SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.000SBD | SBD |
{
"balance": "0.016 STEEM",
"savings_balance": "0.000 STEEM",
"reward_steem_balance": "0.000 STEEM",
"vesting_shares": "202.158698 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "7941.501108 VESTS",
"sbd_balance": "0.000 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "0.000 SBD",
"conversions": []
}Account Info
| name | nhanhoang91 |
| id | 1135787 |
| rank | 239,455 |
| reputation | 42958601 |
| created | 2018-09-17T09:09:15 |
| recovery_account | steem |
| proxy | None |
| post_count | 21 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2021-12-10T06:45:00 |
| last_root_post | 2021-12-10T06:45:00 |
| last_vote_time | 2021-10-29T05:29:12 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.016 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.000 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 202.158698 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 7941.501108 VESTS |
| reward_vesting_balance | 0.000000 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 1970-01-01T00:00:00 |
| last_account_update | 1970-01-01T00:00:00 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 1970-01-01T00:00:00 |
| savings_sbd_last_interest_payment | 1970-01-01T00:00:00 |
{
"active": {
"account_auths": [],
"key_auths": [
[
"STM7C243LXsqT91PQonMvbjU2gUc1SSGXZV2RNQWEasB14QuFuvwH",
1
]
],
"weight_threshold": 1
},
"balance": "0.016 STEEM",
"can_vote": true,
"comment_count": 0,
"created": "2018-09-17T09:09:15",
"curation_rewards": 0,
"delegated_vesting_shares": "0.000000 VESTS",
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779078405
},
"guest_bloggers": [],
"id": 1135787,
"json_metadata": "{}",
"last_account_recovery": "1970-01-01T00:00:00",
"last_account_update": "1970-01-01T00:00:00",
"last_owner_update": "1970-01-01T00:00:00",
"last_post": "2021-12-10T06:45:00",
"last_root_post": "2021-12-10T06:45:00",
"last_vote_time": "2021-10-29T05:29:12",
"lifetime_vote_count": 0,
"market_history": [],
"memo_key": "STM8GhHi87MXkQ4twG6hfeg5vpE2mnobXg1auQetBGyHMSxeRt9DH",
"mined": false,
"name": "nhanhoang91",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"other_history": [],
"owner": {
"account_auths": [],
"key_auths": [
[
"STM7qK3uTAT73p3LXHhpHTPCRaZ2HvMg2V2G5FeDyH8jR8WYP7UCe",
1
]
],
"weight_threshold": 1
},
"pending_claimed_accounts": 0,
"post_bandwidth": 0,
"post_count": 21,
"post_history": [],
"posting": {
"account_auths": [],
"key_auths": [
[
"STM5sthfE2D5Q933fAnQ49CHq69bbyJvXqQyNgAcGgyaBJ9WBgsFH",
1
]
],
"weight_threshold": 1
},
"posting_json_metadata": "",
"posting_rewards": 0,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"proxy": "",
"received_vesting_shares": "7941.501108 VESTS",
"recovery_account": "steem",
"reputation": 42958601,
"reset_account": "null",
"reward_sbd_balance": "0.000 SBD",
"reward_steem_balance": "0.000 STEEM",
"reward_vesting_balance": "0.000000 VESTS",
"reward_vesting_steem": "0.000 STEEM",
"savings_balance": "0.000 STEEM",
"savings_sbd_balance": "0.000 SBD",
"savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_sbd_seconds": "0",
"savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
"savings_withdraw_requests": 0,
"sbd_balance": "0.000 SBD",
"sbd_last_interest_payment": "1970-01-01T00:00:00",
"sbd_seconds": "0",
"sbd_seconds_last_update": "1970-01-01T00:00:00",
"tags_usage": [],
"to_withdraw": 0,
"transfer_history": [],
"vesting_balance": "0.000 STEEM",
"vesting_shares": "202.158698 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"vote_history": [],
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779078405
},
"voting_power": 0,
"withdraw_routes": 0,
"withdrawn": 0,
"witness_votes": [],
"witnesses_voted_for": 0,
"rank": 239455
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
steemdelegated 4.883 SP to @nhanhoang912026/05/18 04:26:45
steemdelegated 4.883 SP to @nhanhoang91
2026/05/18 04:26:45
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 7941.501108 VESTS |
| Transaction Info | Block #106148455/Trx e917e9fd3e5179668cb746b0150b8a3b87d4ee03 |
View Raw JSON Data
{
"block": 106148455,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "7941.501108 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2026-05-18T04:26:45",
"trx_id": "e917e9fd3e5179668cb746b0150b8a3b87d4ee03",
"trx_in_block": 10,
"virtual_op": 0
}steemdelegated 3.216 SP to @nhanhoang912026/05/12 20:50:57
steemdelegated 3.216 SP to @nhanhoang91
2026/05/12 20:50:57
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 5229.290703 VESTS |
| Transaction Info | Block #105996077/Trx 2b5979f5589f5167746312f78d6f4cde88338956 |
View Raw JSON Data
{
"block": 105996077,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "5229.290703 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2026-05-12T20:50:57",
"trx_id": "2b5979f5589f5167746312f78d6f4cde88338956",
"trx_in_block": 0,
"virtual_op": 0
}steemdelegated 4.891 SP to @nhanhoang912026/04/26 03:41:03
steemdelegated 4.891 SP to @nhanhoang91
2026/04/26 03:41:03
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 7954.016864 VESTS |
| Transaction Info | Block #105515987/Trx 6fc714100c588aacc52a4ac5822b7ab044cf9e38 |
View Raw JSON Data
{
"block": 105515987,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "7954.016864 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2026-04-26T03:41:03",
"trx_id": "6fc714100c588aacc52a4ac5822b7ab044cf9e38",
"trx_in_block": 1,
"virtual_op": 0
}steemdelegated 3.241 SP to @nhanhoang912026/01/23 19:03:39
steemdelegated 3.241 SP to @nhanhoang91
2026/01/23 19:03:39
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 5270.837522 VESTS |
| Transaction Info | Block #102865301/Trx 81cf5917082ed933a52873adb21dbf29837116fd |
View Raw JSON Data
{
"block": 102865301,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "5270.837522 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2026-01-23T19:03:39",
"trx_id": "81cf5917082ed933a52873adb21dbf29837116fd",
"trx_in_block": 1,
"virtual_op": 0
}steemdelegated 3.342 SP to @nhanhoang912024/12/17 14:15:27
steemdelegated 3.342 SP to @nhanhoang91
2024/12/17 14:15:27
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 5435.056719 VESTS |
| Transaction Info | Block #91311550/Trx e1162c17f48aa8b4b4e6bb90b81c7fd845f5ea5b |
View Raw JSON Data
{
"block": 91311550,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "5435.056719 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2024-12-17T14:15:27",
"trx_id": "e1162c17f48aa8b4b4e6bb90b81c7fd845f5ea5b",
"trx_in_block": 5,
"virtual_op": 0
}steemdelegated 3.446 SP to @nhanhoang912023/11/14 05:57:09
steemdelegated 3.446 SP to @nhanhoang91
2023/11/14 05:57:09
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 5604.190251 VESTS |
| Transaction Info | Block #79865718/Trx 3fa8d7974711ae0e83cc6dbebf0dda34aa9836c9 |
View Raw JSON Data
{
"block": 79865718,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "5604.190251 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2023-11-14T05:57:09",
"trx_id": "3fa8d7974711ae0e83cc6dbebf0dda34aa9836c9",
"trx_in_block": 2,
"virtual_op": 0
}steemdelegated 5.252 SP to @nhanhoang912023/09/22 08:12:15
steemdelegated 5.252 SP to @nhanhoang91
2023/09/22 08:12:15
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 8541.099037 VESTS |
| Transaction Info | Block #78360250/Trx 1c8bf883664edbe0d98080a63fe19a586277d502 |
View Raw JSON Data
{
"block": 78360250,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "8541.099037 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2023-09-22T08:12:15",
"trx_id": "1c8bf883664edbe0d98080a63fe19a586277d502",
"trx_in_block": 3,
"virtual_op": 0
}steemdelegated 5.388 SP to @nhanhoang912022/11/05 16:18:03
steemdelegated 5.388 SP to @nhanhoang91
2022/11/05 16:18:03
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 8761.468988 VESTS |
| Transaction Info | Block #69176091/Trx 8194541eeaa526b6625d46a58b1b670caa7b5efc |
View Raw JSON Data
{
"block": 69176091,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "8761.468988 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2022-11-05T16:18:03",
"trx_id": "8194541eeaa526b6625d46a58b1b670caa7b5efc",
"trx_in_block": 0,
"virtual_op": 0
}steemdelegated 5.498 SP to @nhanhoang912022/03/11 08:14:24
steemdelegated 5.498 SP to @nhanhoang91
2022/03/11 08:14:24
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 8941.351604 VESTS |
| Transaction Info | Block #62322709/Trx 2b85e88dce9abeb14d546ee4a3bfc45ed76272d4 |
View Raw JSON Data
{
"block": 62322709,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "8941.351604 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2022-03-11T08:14:24",
"trx_id": "2b85e88dce9abeb14d546ee4a3bfc45ed76272d4",
"trx_in_block": 2,
"virtual_op": 0
}steemdelegated 16.842 SP to @nhanhoang912022/02/14 02:05:27
steemdelegated 16.842 SP to @nhanhoang91
2022/02/14 02:05:27
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 27389.232989 VESTS |
| Transaction Info | Block #61600861/Trx 2a24a567d1f2104275b3cdc472286c3dc2127a4f |
View Raw JSON Data
{
"block": 61600861,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "27389.232989 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2022-02-14T02:05:27",
"trx_id": "2a24a567d1f2104275b3cdc472286c3dc2127a4f",
"trx_in_block": 7,
"virtual_op": 0
}nhanhoang91published a new post: enjoy-the-miracle-of-blockchain-technology-with-axelar-network2021/12/17 06:03:06
nhanhoang91published a new post: enjoy-the-miracle-of-blockchain-technology-with-axelar-network
2021/12/17 06:03:06
| author | nhanhoang91 |
| body | @@ -2837,38 +2837,41 @@ er yet, -the most important par +another worth-noting poin t of Axe |
| json metadata | {"tags":["coinbase","crosschain","crypto","cryptocurrency"],"image":["https://images2.imgbox.com/f4/a3/DkZNLBso_o.png","https://images2.imgbox.com/ce/24/b2chE5ET_o.jpg","https://images2.imgbox.com/5e/b9/YmKL7TQf_o.png"],"links":["https://axelar.network/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | axelarnetwork |
| permlink | enjoy-the-miracle-of-blockchain-technology-with-axelar-network |
| title | Enjoy The Miracle Of Blockchain Technology With Axelar Network |
| Transaction Info | Block #59915767/Trx a123505edc7769c3edfbd2a0ee02e9d550e90703 |
View Raw JSON Data
{
"block": 59915767,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "@@ -2837,38 +2837,41 @@\n er yet, \n-the most important par\n+another worth-noting poin\n t of Axe\n",
"json_metadata": "{\"tags\":[\"coinbase\",\"crosschain\",\"crypto\",\"cryptocurrency\"],\"image\":[\"https://images2.imgbox.com/f4/a3/DkZNLBso_o.png\",\"https://images2.imgbox.com/ce/24/b2chE5ET_o.jpg\",\"https://images2.imgbox.com/5e/b9/YmKL7TQf_o.png\"],\"links\":[\"https://axelar.network/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "axelarnetwork",
"permlink": "enjoy-the-miracle-of-blockchain-technology-with-axelar-network",
"title": "Enjoy The Miracle Of Blockchain Technology With Axelar Network"
}
],
"op_in_trx": 0,
"timestamp": "2021-12-17T06:03:06",
"trx_id": "a123505edc7769c3edfbd2a0ee02e9d550e90703",
"trx_in_block": 3,
"virtual_op": 0
}nhanhoang91published a new post: enjoy-the-miracle-of-blockchain-technology-with-axelar-network2021/12/17 06:01:57
nhanhoang91published a new post: enjoy-the-miracle-of-blockchain-technology-with-axelar-network
2021/12/17 06:01:57
| author | nhanhoang91 |
| body | @@ -340,15 +340,9 @@ hain -’ +' s to @@ -2812,24 +2812,459 @@ ss way.%3C/p%3E%0A +%3Cp%3E%0A%3Cp%3ENot over yet, the most important part of Axelar network is that its blockchain%E2%80%99s size will never be overloaded due to the others, its data only increase with the rise of cross-chain transaction. The reason for it is because the network%E2%80%99s design only allow data from gateway contracts and its transaction with other chains (cross-chain transaction), so that users can comfortably use the network with congestion risk-free.%3C/p%3E %0A %3Cp%3E%3Cstrong%3EA @@ -3569,16 +3569,10 @@ CEO - – +'s Do |
| json metadata | {"tags":["coinbase","crosschain","crypto","cryptocurrency"],"image":["https://images2.imgbox.com/f4/a3/DkZNLBso_o.png","https://images2.imgbox.com/ce/24/b2chE5ET_o.jpg","https://images2.imgbox.com/5e/b9/YmKL7TQf_o.png"],"links":["https://axelar.network/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | axelarnetwork |
| permlink | enjoy-the-miracle-of-blockchain-technology-with-axelar-network |
| title | Enjoy The Miracle Of Blockchain Technology With Axelar Network |
| Transaction Info | Block #59915744/Trx 5f1b81c0f4060939a1989749d8d7abb197fa0711 |
View Raw JSON Data
{
"block": 59915744,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "@@ -340,15 +340,9 @@\n hain\n-’\n+'\n s to\n@@ -2812,24 +2812,459 @@\n ss way.%3C/p%3E%0A\n+%3Cp%3E%0A%3Cp%3ENot over yet, the most important part of Axelar network is that its blockchain%E2%80%99s size will never be overloaded due to the others, its data only increase with the rise of cross-chain transaction. The reason for it is because the network%E2%80%99s design only allow data from gateway contracts and its transaction with other chains (cross-chain transaction), so that users can comfortably use the network with congestion risk-free.%3C/p%3E %0A\n %3Cp%3E%3Cstrong%3EA\n@@ -3569,16 +3569,10 @@\n CEO\n- –\n+'s\n Do \n",
"json_metadata": "{\"tags\":[\"coinbase\",\"crosschain\",\"crypto\",\"cryptocurrency\"],\"image\":[\"https://images2.imgbox.com/f4/a3/DkZNLBso_o.png\",\"https://images2.imgbox.com/ce/24/b2chE5ET_o.jpg\",\"https://images2.imgbox.com/5e/b9/YmKL7TQf_o.png\"],\"links\":[\"https://axelar.network/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "axelarnetwork",
"permlink": "enjoy-the-miracle-of-blockchain-technology-with-axelar-network",
"title": "Enjoy The Miracle Of Blockchain Technology With Axelar Network"
}
],
"op_in_trx": 0,
"timestamp": "2021-12-17T06:01:57",
"trx_id": "5f1b81c0f4060939a1989749d8d7abb197fa0711",
"trx_in_block": 24,
"virtual_op": 0
}nhanhoang91published a new post: thu-vien-mat-ma-da-ben-nguon-mo-axelar2021/12/10 06:45:00
nhanhoang91published a new post: thu-vien-mat-ma-da-ben-nguon-mo-axelar
2021/12/10 06:45:00
| author | nhanhoang91 |
| body | <img src="https://images2.imgbox.com/85/36/yqUjalUu_o.png" alt="image host"/></a> <p>Axelar vui mừng thông báo về việc phát hành mã nguồn cho hai ngôn ngữ Rust dành cho mật mã đa bên theo giấy phép Apache2 / MIT kép thông thường và được thừa nhận. Các gói ngôn ngữ mới được phát hành được gọi là tofn và tofnd. Họ cung cấp các triển khai cho các giao thức mật mã đa bên được sử dụng trong mạng Axelar.</p> <p>Mạng Axelar chạy các giao thức đa bên khác nhau để xử lý các yêu cầu xuyên chuỗi. Các giao thức đa bên rất quan trọng trong việc xây dựng các giao thức có khả năng tương tác phi tập trung trên các blockchains. Chúng cho phép một nhóm người xác nhận đưa ra quyết định tập thể về việc giao dịch nào nên được xử lý. Tạo khóa đa bên và ký là hai trong số các nguyên tắc cốt lõi cần thiết để xử lý các yêu cầu như vậy. Những nguyên thủy này có thể đạt được bằng một số phương pháp, bao gồm:</p> <ul> <li>Đa chữ ký cơ bản (nếu thích hợp), và</li> <li>Các giao thức ngưỡng mật mã (để tiết kiệm chi phí gas hoặc kích thước bản dịch).</li> </ul> <p>Hiện tại, Axelar sử dụng cả hai phương pháp này thông qua tofn và tofnd với nhiều phương pháp khác trong tương lai.</p> <p><strong>tofn</strong></p> <p>tofn (t-of-n) là một thư viện thuần Rust cung cấp:</p> <ul> <li>Triển khai <a href="https://eprint.iacr.org/2020/540">giao thức GG20 cho ngưỡng-ECDSA</a>.</li> <li>Tiếp xúc với các nguyên thủy ECDSA cần thiết cho đa chữ ký cơ bản.</li> <li>Một SDK có mục đích chung (bộ phát triển phần mềm) để tạo điều kiện phát triển và sử dụng các giao thức mật mã đa bên như GG20.</li> </ul> <p>Tìm hiểu thêm tại <a href="https://github.com/axelarnetwork/tofn">kho lưu trữ git tofn</a>.</p> <p><strong>tofnd</strong></p> <p>tofnd (tofn-daemon) là một tệp thực thi thuần Rust cung cấp:</p> <ul> <li>Máy chủ gRPC thể hiện chức năng mật mã đa bên của thư viện tofn.</li> <li>Lưu trữ được mã hóa các khóa bí mật mật mã.</li> </ul> <p>Tìm hiểu thêm tại <a href="https://github.com/axelarnetwork/tofnd">kho lưu trữ git tofnd</a>.</p> <p><strong>Con đường phía trước</strong></p> <p>Cả tofn và tofnd hiện đang được phát triển tích cực và liên tục. Cả hai kho đã được kiểm toán bởi Dịch vụ mật mã của NCC Group vào ngày 10/08/2021 và bởi <a href="https://adrianhamelink.com/">Adrian Hamelink</a> và <a href="https://cronokirby.com/">Lúcás Meier</a> vào ngày 29/10/2021. Nguồn mở các thư viện này là một cột mốc quan trọng đối với hệ sinh thái và cộng đồng Axelar. Sứ mệnh cốt lõi của chúng tôi là xây dựng một mạng lưới khả năng tương tác chuỗi chéo an toàn và mạnh mẽ, đồng thời chúng tôi luôn hoan nghênh những đóng góp và phản hồi từ cộng đồng.</p> Bài gốc: https://axelar.network/axelar-open-sources-multi-party-cryptography-libraries |
| json metadata | {"tags":["axelarnetwork"],"image":["https://images2.imgbox.com/85/36/yqUjalUu_o.png"],"links":["https://eprint.iacr.org/2020/540","https://github.com/axelarnetwork/tofn","https://github.com/axelarnetwork/tofnd","https://adrianhamelink.com/","https://cronokirby.com/","https://axelar.network/axelar-open-sources-multi-party-cryptography-libraries"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | axelarnetwork |
| permlink | thu-vien-mat-ma-da-ben-nguon-mo-axelar |
| title | Thư viện mật mã đa bên nguồn mở Axelar |
| Transaction Info | Block #59721438/Trx 4e1094445f755f1f6376f5ae8e2bc67458433c69 |
View Raw JSON Data
{
"block": 59721438,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<img src=\"https://images2.imgbox.com/85/36/yqUjalUu_o.png\" alt=\"image host\"/></a>\n<p>Axelar vui mừng thông báo về việc phát hành mã nguồn cho hai ngôn ngữ Rust dành cho mật mã đa bên theo giấy phép Apache2 / MIT kép thông thường và được thừa nhận. Các gói ngôn ngữ mới được phát hành được gọi là tofn và tofnd. Họ cung cấp các triển khai cho các giao thức mật mã đa bên được sử dụng trong mạng Axelar.</p>\n<p>Mạng Axelar chạy các giao thức đa bên khác nhau để xử lý các yêu cầu xuyên chuỗi. Các giao thức đa bên rất quan trọng trong việc xây dựng các giao thức có khả năng tương tác phi tập trung trên các blockchains. Chúng cho phép một nhóm người xác nhận đưa ra quyết định tập thể về việc giao dịch nào nên được xử lý. Tạo khóa đa bên và ký là hai trong số các nguyên tắc cốt lõi cần thiết để xử lý các yêu cầu như vậy. Những nguyên thủy này có thể đạt được bằng một số phương pháp, bao gồm:</p>\n<ul>\n<li>Đa chữ ký cơ bản (nếu thích hợp), và</li>\n<li>Các giao thức ngưỡng mật mã (để tiết kiệm chi phí gas hoặc kích thước bản dịch).</li>\n</ul>\n<p>Hiện tại, Axelar sử dụng cả hai phương pháp này thông qua tofn và tofnd với nhiều phương pháp khác trong tương lai.</p>\n<p><strong>tofn</strong></p>\n<p>tofn (t-of-n) là một thư viện thuần Rust cung cấp:</p>\n<ul>\n<li>Triển khai <a href=\"https://eprint.iacr.org/2020/540\">giao thức GG20 cho ngưỡng-ECDSA</a>.</li>\n<li>Tiếp xúc với các nguyên thủy ECDSA cần thiết cho đa chữ ký cơ bản.</li>\n<li>Một SDK có mục đích chung (bộ phát triển phần mềm) để tạo điều kiện phát triển và sử dụng các giao thức mật mã đa bên như GG20.</li>\n</ul>\n<p>Tìm hiểu thêm tại <a href=\"https://github.com/axelarnetwork/tofn\">kho lưu trữ git tofn</a>.</p>\n<p><strong>tofnd</strong></p>\n<p>tofnd (tofn-daemon) là một tệp thực thi thuần Rust cung cấp:</p>\n<ul>\n<li>Máy chủ gRPC thể hiện chức năng mật mã đa bên của thư viện tofn.</li>\n<li>Lưu trữ được mã hóa các khóa bí mật mật mã.</li>\n</ul>\n<p>Tìm hiểu thêm tại <a href=\"https://github.com/axelarnetwork/tofnd\">kho lưu trữ git tofnd</a>.</p>\n<p><strong>Con đường phía trước</strong></p>\n<p>Cả tofn và tofnd hiện đang được phát triển tích cực và liên tục. Cả hai kho đã được kiểm toán bởi Dịch vụ mật mã của NCC Group vào ngày 10/08/2021 và bởi <a href=\"https://adrianhamelink.com/\">Adrian Hamelink</a> và <a href=\"https://cronokirby.com/\">Lúcás Meier</a> vào ngày 29/10/2021. Nguồn mở các thư viện này là một cột mốc quan trọng đối với hệ sinh thái và cộng đồng Axelar. Sứ mệnh cốt lõi của chúng tôi là xây dựng một mạng lưới khả năng tương tác chuỗi chéo an toàn và mạnh mẽ, đồng thời chúng tôi luôn hoan nghênh những đóng góp và phản hồi từ cộng đồng.</p>\nBài gốc: https://axelar.network/axelar-open-sources-multi-party-cryptography-libraries",
"json_metadata": "{\"tags\":[\"axelarnetwork\"],\"image\":[\"https://images2.imgbox.com/85/36/yqUjalUu_o.png\"],\"links\":[\"https://eprint.iacr.org/2020/540\",\"https://github.com/axelarnetwork/tofn\",\"https://github.com/axelarnetwork/tofnd\",\"https://adrianhamelink.com/\",\"https://cronokirby.com/\",\"https://axelar.network/axelar-open-sources-multi-party-cryptography-libraries\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "axelarnetwork",
"permlink": "thu-vien-mat-ma-da-ben-nguon-mo-axelar",
"title": "Thư viện mật mã đa bên nguồn mở Axelar"
}
],
"op_in_trx": 0,
"timestamp": "2021-12-10T06:45:00",
"trx_id": "4e1094445f755f1f6376f5ae8e2bc67458433c69",
"trx_in_block": 5,
"virtual_op": 0
}nhanhoang91published a new post: enjoy-the-miracle-of-blockchain-technology-with-axelar-network2021/12/09 13:24:06
nhanhoang91published a new post: enjoy-the-miracle-of-blockchain-technology-with-axelar-network
2021/12/09 13:24:06
| author | nhanhoang91 |
| body | <p>There are more than one thousand projects on coinmarketcap and this makes it difficult for a new user to decide which one is good enough to use. Even after choosing one to use, it is not easy to change to the others in case a user feel not satisfied with the current one. He/she has to buy/sell tokens that he/she is using and buy new chain’s tokens which he/she wants to switch to. That is the reason why Axelar was born to provide a cross-chain communication that brings comfortable experience to all decentralized app users. </p> <p><img src="https://images2.imgbox.com/f4/a3/DkZNLBso_o.png" alt="image host"/></a></p> <p><strong>The Importance Of Cross-Chain Interoperability</strong></p> <p>There is the fact that most blockchains operate independently and cannot communicate with each other, this has prevented people from enjoying the full benefits of blockchain technology. Cross-chain communication is the solution to all these problems by enabling interoperability between blockchains, thus making it easy for them to communicate with each other and share information. In particular, cross-chain is a solution that allows the transfer of assets from one chain to another to optimize the ability to aggregate between chains. Cross-chain projects allow users to connect, transfer value and information between blockchains. It is considered as a solution to enhance interoperability between blockchains. Axelar, a "decentralized state machine" was built to support and handle cross-chain requests between blockchains.</p> <p><img src="https://images2.imgbox.com/ce/24/b2chE5ET_o.jpg" alt="image host"/></a></p> <p><strong>Axelar Network Key Highlights</strong></p> <p>The Axelar network includes a suite of protocols and APIs, which include two key components that are Cross-chain Gateway Protocol (CGP) and Cross-chain Transfer Protocol (CTP), in which, Cross-chain Gateway Protocol is the most important part. Cross-chain Gateway Protocol has a permission to allow which new ecosystem can be deployed and exchange information thanks to its consensus rule. Particularly, this rule need to reach agreement by all validators in the network to prevent fraud and failure. While Cross-chain Transfer Protocol helps dapp developers connect multichain dapps and store their valuable data in different blockchain infrastructure. In addition, this protocol also enables users can query the application through APIs such as HTTP GET/POST,...By different ways, the solution of Axelar can help developers save a lot of time and effort in building decentralized appications. However, the most important part of Axelar network is that it can operate in any chains in the market even with chains do not have smart contract. All of the mentioned activities above are fully run in decentralized and trustless way.</p> <p><strong>Axelar Backers</strong></p> <p>With cutting-edge technology, no surprisingly that Axelar raised USD25 milions in Series A round with the participation of most notable and well-known investors in crypto, some of which can be highlighted such as Coinbase Ventures, Polychain Capital, Binance and Terra CEO – Do Kwon. Besides, Axelar also made partnership with popular blockchain such as Avalanche, Terra and Moonbeam</p> <p><img src="https://images2.imgbox.com/5e/b9/YmKL7TQf_o.png" alt="image host"/></a></p> <p>Axelar project includes number of best things: experience team, state-of-the-art product, excellent idea, great start! Good ideas are necessary in blockchain , but more importantly, real products and massive adoption are also needed and Axelar has all of them! They have great technology called Cross-Chain Gateway Protocol, and also products which are a decentralized network and a protocol suite (with APIs) which serve the devs and users in the most comfortable way. With this well preparation from Axelar Team, the company will definitely occupy a leading place in this crypto space in the near future!</p> <p><strong>Reference:</strong> https://axelar.network/</p> |
| json metadata | {"tags":["axelarnetwork","coinbase","crosschain","crypto","cryptocurrency"],"image":["https://images2.imgbox.com/f4/a3/DkZNLBso_o.png","https://images2.imgbox.com/ce/24/b2chE5ET_o.jpg","https://images2.imgbox.com/5e/b9/YmKL7TQf_o.png"],"links":["https://axelar.network/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | axelarnetwork |
| permlink | enjoy-the-miracle-of-blockchain-technology-with-axelar-network |
| title | Enjoy The Miracle Of Blockchain Technology With Axelar Network |
| Transaction Info | Block #59700785/Trx c64aa5f576d0b544376869aaed5a72a3cde01478 |
View Raw JSON Data
{
"block": 59700785,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<p>There are more than one thousand projects on coinmarketcap and this makes it difficult for a new user to decide which one is good enough to use. Even after choosing one to use, it is not easy to change to the others in case a user feel not satisfied with the current one. He/she has to buy/sell tokens that he/she is using and buy new chain’s tokens which he/she wants to switch to. That is the reason why Axelar was born to provide a cross-chain communication that brings comfortable experience to all decentralized app users. </p>\n<p><img src=\"https://images2.imgbox.com/f4/a3/DkZNLBso_o.png\" alt=\"image host\"/></a></p>\n<p><strong>The Importance Of Cross-Chain Interoperability</strong></p>\n<p>There is the fact that most blockchains operate independently and cannot communicate with each other, this has prevented people from enjoying the full benefits of blockchain technology. Cross-chain communication is the solution to all these problems by enabling interoperability between blockchains, thus making it easy for them to communicate with each other and share information. In particular, cross-chain is a solution that allows the transfer of assets from one chain to another to optimize the ability to aggregate between chains. Cross-chain projects allow users to connect, transfer value and information between blockchains. It is considered as a solution to enhance interoperability between blockchains. Axelar, a \"decentralized state machine\" was built to support and handle cross-chain requests between blockchains.</p>\n<p><img src=\"https://images2.imgbox.com/ce/24/b2chE5ET_o.jpg\" alt=\"image host\"/></a></p>\n<p><strong>Axelar Network Key Highlights</strong></p>\n<p>The Axelar network includes a suite of protocols and APIs, which include two key components that are Cross-chain Gateway Protocol (CGP) and Cross-chain Transfer Protocol (CTP), in which, Cross-chain Gateway Protocol is the most important part. Cross-chain Gateway Protocol has a permission to allow which new ecosystem can be deployed and exchange information thanks to its consensus rule. Particularly, this rule need to reach agreement by all validators in the network to prevent fraud and failure. While Cross-chain Transfer Protocol helps dapp developers connect multichain dapps and store their valuable data in different blockchain infrastructure. In addition, this protocol also enables users can query the application through APIs such as HTTP GET/POST,...By different ways, the solution of Axelar can help developers save a lot of time and effort in building decentralized appications. However, the most important part of Axelar network is that it can operate in any chains in the market even with chains do not have smart contract. All of the mentioned activities above are fully run in decentralized and trustless way.</p>\n<p><strong>Axelar Backers</strong></p>\n<p>With cutting-edge technology, no surprisingly that Axelar raised USD25 milions in Series A round with the participation of most notable and well-known investors in crypto, some of which can be highlighted such as Coinbase Ventures, Polychain Capital, Binance and Terra CEO – Do Kwon. Besides, Axelar also made partnership with popular blockchain such as Avalanche, Terra and Moonbeam</p>\n<p><img src=\"https://images2.imgbox.com/5e/b9/YmKL7TQf_o.png\" alt=\"image host\"/></a></p>\n<p>Axelar project includes number of best things: experience team, state-of-the-art product, excellent idea, great start! Good ideas are necessary in blockchain , but more importantly, real products and massive adoption are also needed and Axelar has all of them! They have great technology called Cross-Chain Gateway Protocol, and also products which are a decentralized network and a protocol suite (with APIs) which serve the devs and users in the most comfortable way. With this well preparation from Axelar Team, the company will definitely occupy a leading place in this crypto space in the near future!</p>\n<p><strong>Reference:</strong> https://axelar.network/</p>",
"json_metadata": "{\"tags\":[\"axelarnetwork\",\"coinbase\",\"crosschain\",\"crypto\",\"cryptocurrency\"],\"image\":[\"https://images2.imgbox.com/f4/a3/DkZNLBso_o.png\",\"https://images2.imgbox.com/ce/24/b2chE5ET_o.jpg\",\"https://images2.imgbox.com/5e/b9/YmKL7TQf_o.png\"],\"links\":[\"https://axelar.network/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "axelarnetwork",
"permlink": "enjoy-the-miracle-of-blockchain-technology-with-axelar-network",
"title": "Enjoy The Miracle Of Blockchain Technology With Axelar Network"
}
],
"op_in_trx": 0,
"timestamp": "2021-12-09T13:24:06",
"trx_id": "c64aa5f576d0b544376869aaed5a72a3cde01478",
"trx_in_block": 4,
"virtual_op": 0
}nhanhoang91published a new post: the-future-is-here-with-flux-protocol2021/12/02 07:29:24
nhanhoang91published a new post: the-future-is-here-with-flux-protocol
2021/12/02 07:29:24
| author | nhanhoang91 |
| body | <p><strong>WHY DATA IS IMPORTANT IN SMART CONTRACT?</strong></p> <p>As we are all known that data is an extremely important component for any type of contract, even a period or comma just needs to be placed in a different position and the meaning of the whole contract could be changed a lot. Similarly, in the digital economy of Blockchain, Smart contract is an indispensable component. The data constituting a Smart contract is even more important. Oracle supports data aggregation, connects data from the real world to put into smart contracts, and allows smart contracts to access Oracle data through APIs. <p><a href="https://www.fluxprotocol.org" target="_blank"><img src="https://images2.imgbox.com/cd/39/Nj5zNEtS_o.png" alt="image host"/></a></p> <a href="https://www.fluxprotocol.org/">Flux Protocol</a> is an open source oracle that aims to be the data layer of all leading blockchains out there. This is the very ambitious vision of the project, Flux Protocol is the first cross-chain oracle built on Near Protocol. At the time of writing Flux has partnered with Solana and there will be even more leading ecosystems joining the force in the near future.</p> <p>At the time of writing this article, there are only two projects in NEAR ecosystem received funds from Coinbase Venture which are Flux Protocol and NEAR Protocol. This shows the importance of oracle in an ecosystem.</p> <p><strong>WHAT IS <a href="https://www.fluxprotocol.org/">FLUX PROTOCOL</a> AND WHY NEAR (NOT ETHEREUM)?</strong></p> <a href="https://www.fluxprotocol.org" target="_blank"><img src="https://images2.imgbox.com/13/d2/E5YAu1Bu_o.jpeg" alt="image host"/></a> <p>Flux (FLX) is a scalable open data protocol that provides on-chain data for any asset, commodity, or event. Easily connect to Flux using the open-source Javascript SDK to enable scalable, permission-free data. Flux is a fully secure trading experience that ensures markets work properly by compensating validators to solve problems (with open interest fees). Using Flux, stakeholders work together to build a truly decentralized, user-friendly and scalable ecosystem. At the very first stage of development, Flux Team tried to build the project on Ethereum but they met unsolved obstacles such as high transaction fee, low throughput and security. For examples, a transaction on Flux cost $10 - $15 if running on Ethereum network, this is too expensive for typical users who only want to transact with a small amount or even with regular users who need to use the protocol more frequently. This will not make the project becomes popular. That is why they decided to choose NEAR Protocol, the project can help them to achieve decentralized, expandable, inexpensive to use, user-friendly and security thanks to NEAR's Nightshade sharding technology.</p> <p>"One of the biggest advantages is that NEAR has an on-chain random number generator. They call it the Randomness Beacon. This allows us to have this super fast oracle." Peter Mitchell, CEO of Flux</p> <p>The statement from Peter above shows the powerful of NEAR Protocol's technology and how it can help Flux Protocol becomes "The Oracle From The Future"</p> <p><strong>FLUX PROTOCOL CORE VISIONS</strong></p> <p>The protocol is run by a Decentralized Autonomous Organization (DAO) consisting of $FLX token holders. The DAO is responsible for approving or rejecting whitelisting applications for interfaces, managing upgradeable features and setting price floors for data request resolution. You can learn more about Flux DAO <a href="https://www.fluxprotocol.org/blog/introducing-flux-dao">here</a>. In Flux Protocol, <strong>Community is the first priority</strong>! <p><a href="https://www.fluxprotocol.org" target="_blank"><img src="https://images2.imgbox.com/19/f5/wad491sz_o.jpg" alt="image host"/></a></p> With 5% of the total token supply allocated to projects that support the use of Flux oracle and access to a world-class system of backers, developers will have unlimited access on the support and tools they need to kickstart their ecosystem. Therefore, <strong>developer-friendly is the second priority</strong> of Flux Protocol! Since Flux Protocol is an oracle aggregator and an agnostic blockchain, therefore, there will be no barriers for developers can easily work with Flux Protocol no matters where they are working at, from NEAR to Solana and many more will be soon approach this magic oracle. With this flexible design and visions mentioned above, <strong>mass adoption</strong> will come to Flux Protocol sooner or later! </p> <p><strong>Reference:</strong></p> https://www.fluxprotocol.org/ |
| json metadata | {"tags":["oracle","coinbase","fluxprotocol","nearprotocol","blockchain"],"image":["https://images2.imgbox.com/cd/39/Nj5zNEtS_o.png","https://images2.imgbox.com/13/d2/E5YAu1Bu_o.jpeg","https://images2.imgbox.com/19/f5/wad491sz_o.jpg"],"links":["https://www.fluxprotocol.org","https://www.fluxprotocol.org/","https://www.fluxprotocol.org/blog/introducing-flux-dao"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | oracle |
| permlink | the-future-is-here-with-flux-protocol |
| title | THE FUTURE IS HERE WITH FLUX PROTOCOL |
| Transaction Info | Block #59493274/Trx 071e5e5ca493845b04d2c86ea554b6ed2e3dd013 |
View Raw JSON Data
{
"block": 59493274,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<p><strong>WHY DATA IS IMPORTANT IN SMART CONTRACT?</strong></p>\n<p>As we are all known that data is an extremely important component for any type of contract, even a period or comma just needs to be placed in a different position and the meaning of the whole contract could be changed a lot. Similarly, in the digital economy of Blockchain, Smart contract is an indispensable component. The data constituting a Smart contract is even more important. Oracle supports data aggregation, connects data from the real world to put into smart contracts, and allows smart contracts to access Oracle data through APIs. \n<p><a href=\"https://www.fluxprotocol.org\" target=\"_blank\"><img src=\"https://images2.imgbox.com/cd/39/Nj5zNEtS_o.png\" alt=\"image host\"/></a></p>\n<a href=\"https://www.fluxprotocol.org/\">Flux Protocol</a> is an open source oracle that aims to be the data layer of all leading blockchains out there. This is the very ambitious vision of the project, Flux Protocol is the first cross-chain oracle built on Near Protocol. At the time of writing Flux has partnered with Solana and there will be even more leading ecosystems joining the force in the near future.</p>\n<p>At the time of writing this article, there are only two projects in NEAR ecosystem received funds from Coinbase Venture which are Flux Protocol and NEAR Protocol. This shows the importance of oracle in an ecosystem.</p>\n<p><strong>WHAT IS <a href=\"https://www.fluxprotocol.org/\">FLUX PROTOCOL</a> AND WHY NEAR (NOT ETHEREUM)?</strong></p>\n<a href=\"https://www.fluxprotocol.org\" target=\"_blank\"><img src=\"https://images2.imgbox.com/13/d2/E5YAu1Bu_o.jpeg\" alt=\"image host\"/></a>\n<p>Flux (FLX) is a scalable open data protocol that provides on-chain data for any asset, commodity, or event. Easily connect to Flux using the open-source Javascript SDK to enable scalable, permission-free data. Flux is a fully secure trading experience that ensures markets work properly by compensating validators to solve problems (with open interest fees). Using Flux, stakeholders work together to build a truly decentralized, user-friendly and scalable ecosystem. At the very first stage of development, Flux Team tried to build the project on Ethereum but they met unsolved obstacles such as high transaction fee, low throughput and security. For examples, a transaction on Flux cost $10 - $15 if running on Ethereum network, this is too expensive for typical users who only want to transact with a small amount or even with regular users who need to use the protocol more frequently. This will not make the project becomes popular. That is why they decided to choose NEAR Protocol, the project can help them to achieve decentralized, expandable, inexpensive to use, user-friendly and security thanks to NEAR's Nightshade sharding technology.</p>\n<p>\"One of the biggest advantages is that NEAR has an on-chain random number generator. They call it the Randomness Beacon. This allows us to have this super fast oracle.\" Peter Mitchell, CEO of Flux</p>\n<p>The statement from Peter above shows the powerful of NEAR Protocol's technology and how it can help Flux Protocol becomes \"The Oracle From The Future\"</p>\n<p><strong>FLUX PROTOCOL CORE VISIONS</strong></p>\n<p>The protocol is run by a Decentralized Autonomous Organization (DAO) consisting of $FLX token holders. The DAO is responsible for approving or rejecting whitelisting applications for interfaces, managing upgradeable features and setting price floors for data request resolution. You can learn more about Flux DAO <a href=\"https://www.fluxprotocol.org/blog/introducing-flux-dao\">here</a>. In Flux Protocol, <strong>Community is the first priority</strong>! \n<p><a href=\"https://www.fluxprotocol.org\" target=\"_blank\"><img src=\"https://images2.imgbox.com/19/f5/wad491sz_o.jpg\" alt=\"image host\"/></a></p>\nWith 5% of the total token supply allocated to projects that support the use of Flux oracle and access to a world-class system of backers, developers will have unlimited access on the support and tools they need to kickstart their ecosystem. Therefore, <strong>developer-friendly is the second priority</strong> of Flux Protocol! Since Flux Protocol is an oracle aggregator and an agnostic blockchain, therefore, there will be no barriers for developers can easily work with Flux Protocol no matters where they are working at, from NEAR to Solana and many more will be soon approach this magic oracle. With this flexible design and visions mentioned above, <strong>mass adoption</strong> will come to Flux Protocol sooner or later! </p>\n<p><strong>Reference:</strong></p> https://www.fluxprotocol.org/",
"json_metadata": "{\"tags\":[\"oracle\",\"coinbase\",\"fluxprotocol\",\"nearprotocol\",\"blockchain\"],\"image\":[\"https://images2.imgbox.com/cd/39/Nj5zNEtS_o.png\",\"https://images2.imgbox.com/13/d2/E5YAu1Bu_o.jpeg\",\"https://images2.imgbox.com/19/f5/wad491sz_o.jpg\"],\"links\":[\"https://www.fluxprotocol.org\",\"https://www.fluxprotocol.org/\",\"https://www.fluxprotocol.org/blog/introducing-flux-dao\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "oracle",
"permlink": "the-future-is-here-with-flux-protocol",
"title": "THE FUTURE IS HERE WITH FLUX PROTOCOL"
}
],
"op_in_trx": 0,
"timestamp": "2021-12-02T07:29:24",
"trx_id": "071e5e5ca493845b04d2c86ea554b6ed2e3dd013",
"trx_in_block": 4,
"virtual_op": 0
}steemdelegated 16.955 SP to @nhanhoang912021/11/30 08:19:36
steemdelegated 16.955 SP to @nhanhoang91
2021/11/30 08:19:36
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 27572.669928 VESTS |
| Transaction Info | Block #59437104/Trx 616af6cade7ac61cbfab9a007f6a4512430a17e4 |
View Raw JSON Data
{
"block": 59437104,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "27572.669928 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2021-11-30T08:19:36",
"trx_id": "616af6cade7ac61cbfab9a007f6a4512430a17e4",
"trx_in_block": 0,
"virtual_op": 0
}project.hopesent 0.011 STEEM to @nhanhoang91- "Hi @nhanhoang91. Would you like to earn solid (115k SP) upvote on your latest post from @project.hope? Check out our recent post for more details. And hopefully you will find this publication worth yo..."2021/11/24 14:20:39
project.hopesent 0.011 STEEM to @nhanhoang91- "Hi @nhanhoang91. Would you like to earn solid (115k SP) upvote on your latest post from @project.hope? Check out our recent post for more details. And hopefully you will find this publication worth yo..."
2021/11/24 14:20:39
| amount | 0.011 STEEM |
| from | project.hope |
| memo | Hi @nhanhoang91. Would you like to earn solid (115k SP) upvote on your latest post from @project.hope? Check out our recent post for more details. And hopefully you will find this publication worth your time and attention. We're explaining our community economy "business model", hoping that more people will join our efforts in the future. // LINk: https://steemit.com/hive-175254/@project.hope/project-hope-economy-explained-2021 |
| to | nhanhoang91 |
| Transaction Info | Block #59276606/Trx 8e644463d7d8084f2d02a2aa2e8cc74acee09189 |
View Raw JSON Data
{
"block": 59276606,
"op": [
"transfer",
{
"amount": "0.011 STEEM",
"from": "project.hope",
"memo": "Hi @nhanhoang91. Would you like to earn solid (115k SP) upvote on your latest post from @project.hope? Check out our recent post for more details. And hopefully you will find this publication worth your time and attention. We're explaining our community economy \"business model\", hoping that more people will join our efforts in the future. // LINk: https://steemit.com/hive-175254/@project.hope/project-hope-economy-explained-2021",
"to": "nhanhoang91"
}
],
"op_in_trx": 0,
"timestamp": "2021-11-24T14:20:39",
"trx_id": "8e644463d7d8084f2d02a2aa2e8cc74acee09189",
"trx_in_block": 10,
"virtual_op": 0
}nhanhoang91published a new post: ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat2021/10/29 05:34:18
nhanhoang91published a new post: ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat
2021/10/29 05:34:18
| author | nhanhoang91 |
| body | @@ -1986,24 +1986,162 @@ Solana.%3C/p%3E%0A +%3Ca href=%22https://www.fluxprotocol.org/%22 target=%22_blank%22%3E%3Cimg src=%22https://images2.imgbox.com/83/2c/K5mp8Wg8_o.jpg%22 alt=%22image host%22/%3E%3C/a%3E%0A %3Ch2%3EGiao th%E1%BB%A9 |
| json metadata | {"tags":["fluxprotocol","vietnam","oracles","crypto"],"image":["https://images2.imgbox.com/d6/24/p61k0Pff_o.jpg","https://images2.imgbox.com/83/2c/K5mp8Wg8_o.jpg","https://images2.imgbox.com/99/1b/obxXMjiC_o.jpg"],"links":["https://www.fluxprotocol.org/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | blockchaindata |
| permlink | ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat |
| title | LÝ DO FLUX PROTOCOL LÀ MỘT TRONG NHỮNG DỰ ÁN ĐƯỢC MONG CHỜ NHẤT |
| Transaction Info | Block #58523812/Trx f05d84f85ac456703ec628528b4bfed615831508 |
View Raw JSON Data
{
"block": 58523812,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "@@ -1986,24 +1986,162 @@\n Solana.%3C/p%3E%0A\n+%3Ca href=%22https://www.fluxprotocol.org/%22 target=%22_blank%22%3E%3Cimg src=%22https://images2.imgbox.com/83/2c/K5mp8Wg8_o.jpg%22 alt=%22image host%22/%3E%3C/a%3E%0A\n %3Ch2%3EGiao th%E1%BB%A9\n",
"json_metadata": "{\"tags\":[\"fluxprotocol\",\"vietnam\",\"oracles\",\"crypto\"],\"image\":[\"https://images2.imgbox.com/d6/24/p61k0Pff_o.jpg\",\"https://images2.imgbox.com/83/2c/K5mp8Wg8_o.jpg\",\"https://images2.imgbox.com/99/1b/obxXMjiC_o.jpg\"],\"links\":[\"https://www.fluxprotocol.org/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchaindata",
"permlink": "ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat",
"title": "LÝ DO FLUX PROTOCOL LÀ MỘT TRONG NHỮNG DỰ ÁN ĐƯỢC MONG CHỜ NHẤT"
}
],
"op_in_trx": 0,
"timestamp": "2021-10-29T05:34:18",
"trx_id": "f05d84f85ac456703ec628528b4bfed615831508",
"trx_in_block": 13,
"virtual_op": 0
}2021/10/29 05:29:12
2021/10/29 05:29:12
| author | nhanhoang91 |
| permlink | ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat |
| voter | nhanhoang91 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #58523710/Trx 48de5e9da2623fd2d88fb4355b2c4b75a2b2ee98 |
View Raw JSON Data
{
"block": 58523710,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat",
"voter": "nhanhoang91",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2021-10-29T05:29:12",
"trx_id": "48de5e9da2623fd2d88fb4355b2c4b75a2b2ee98",
"trx_in_block": 1,
"virtual_op": 0
}nhanhoang91published a new post: ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat2021/10/25 06:54:42
nhanhoang91published a new post: ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat
2021/10/25 06:54:42
| author | nhanhoang91 |
| body | <h2>Một trong những dự án phát triển nhanh nhất</h2> <p>Các công cụ và ứng dụng DeFi tốt nhất được sinh ra hàng ngày trong hệ sinh thái NEAR. Theo kịp sự phát triển của DeFi trên Near không phải là nhiệm vụ dễ dàng nhưng bài viết này sẽ tập trung vào dự án đáng chú ý nhất sắp ra mắt. Đó là Giao thức Flux, trình tổng hợp oracle chuỗi chéo đầu tiên được xây dựng trên NEAR.</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/d6/24/p61k0Pff_o.jpg" alt="image host"/></a> <p>Flux Protocol là một trong những ứng dụng DeFi hot nhất trên Near hiện tại. Đây là một trình tổng hợp oracle phi tập trung, không tin cậy, cho phép người dùng phân cấp các nguồn dữ liệu và các oracles trong đời thực của họ, do đó loại bỏ vấn đề oracle đơn lẻ và thêm một lớp dữ liệu đáng tin cậy.</p> <p>Vào ngày 20 tháng 5, Flux đã có một vòng hạt giống rất thành công với số tiền đáng kinh ngạc là $ 10,3M. Trong số các nhà đầu tư có Coinbase Ventures, Distributed Global và Coinfund. Coinbase Ventures cũng là một trong những nhà đầu tư chính của NEAR Protocol như chúng ta đều biết.</p> <p>Vào tháng 7, Flux đã công bố một chương trình Foreteller mà mọi người yêu thích Flux có thể tham gia và đóng góp nỗ lực của họ, từ việc tạo nội dung, meme, nhãn dán cho sự phát triển của cộng đồng dự án. Cùng lúc đó, thương vụ mua lại Flux đầu tiên cũng đã diễn ra. Pulse, một nền tảng thị trường dự đoán do cộng đồng sở hữu được xây dựng dựa trên Flux, đã mua lại Stake.gg, một nền tảng thị trường dự đoán toàn cầu, không cần sự cho phép và mã nguồn mở dành cho game thủ. Thông qua việc mua lại này, Stake.gg đã có được quyền truy cập vào hệ sinh thái Pulse và các lợi ích phân giải tự động của Giao thức Flux và giao diện người dùng IPFS chống kiểm duyệt. Vào ngày 15 tháng 9, Flux đã thông báo về sự ra mắt sắp tới trên Solana, một trong những blockchain phát triển nhanh nhất trong thế giới tiền điện tử. Sự tích hợp này mở ra một loạt các tính năng và chức năng trên Solana.</p> <h2>Giao thức Flux đã sẵn sàng để áp dụng hàng loạt!</h2> <p> <p>Với sự phát triển ấn tượng như đã nói ở trên, Flux Protocol sẽ sớm bùng nổ. Một trong những lý do cho điều này là UX / UI thân thiện với người dùng. Rõ ràng hơn, nhà phát triển chỉ cần 3 dòng mã để kết nối với Flux SDK. Nó sẽ giúp các nhà phát triển tiết kiệm rất nhiều thời gian để thử nghiệm hoặc phát triển các ngành dọc trên Flux từ cá cược thể thao đến thị trường dự đoán thời tiết. Trên thực tế, có rất nhiều dApp liên quan đến cổ phiếu, meme, thể thao điện tử được xây dựng nhờ vào công nghệ tiên tiến của Flux và UX dễ sử dụng của nó.</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/99/1b/obxXMjiC_o.jpg" alt="image host"/></a> <p> <p>Mặt khác, vì Flux được xây dựng trên NEAR, do đó, các nhà phát triển cũng có thể tận dụng lợi thế của thiết kế cơ sở hạ tầng hiện đại của nó như blockchain hiệu suất cao hơn, phí gas của NEAR Protocol thấp hơn đáng kể so với việc xây dựng trên oracles của Ethereum. Hơn nữa, các nhà phát triển cũng có thể sử dụng Cầu vồng của NEAR trong trường hợp họ muốn chuyển tài sản của mình giữa hai blockchain này và quá trình này cũng rất đơn giản và dễ sử dụng.</p> <p>Tóm lại, dự án tuyệt vời với một ý tưởng phát triển thú vị là những gì chúng ta có thể nói về Giao thức Flux. Một nhóm đặc biệt với các lập trình viên cạnh tranh cấp độ vô địch, những người biết công việc của họ và tận tâm phát triển dự án. Với sự phát triển nhanh chóng này, sẽ không có gì ngạc nhiên khi dự án Flux Protocol chắc chắn sẽ là dự án oracle hàng đầu phục vụ toàn bộ ngành công nghiệp blockchain một khi nó đi vào hoạt động!</p> <h2>Tham khảo:</h2> https://www.fluxprotocol.org/ |
| json metadata | {"tags":["blockchaindata","fluxprotocol","vietnam","oracles","crypto"],"image":["https://images2.imgbox.com/d6/24/p61k0Pff_o.jpg","https://images2.imgbox.com/99/1b/obxXMjiC_o.jpg"],"links":["https://www.fluxprotocol.org/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | blockchaindata |
| permlink | ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat |
| title | LÝ DO FLUX PROTOCOL LÀ MỘT TRONG NHỮNG DỰ ÁN ĐƯỢC MONG CHỜ NHẤT |
| Transaction Info | Block #58410891/Trx 5836fc76b6f48e23576ea9244fa8e4104f29336c |
View Raw JSON Data
{
"block": 58410891,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<h2>Một trong những dự án phát triển nhanh nhất</h2>\n<p>Các công cụ và ứng dụng DeFi tốt nhất được sinh ra hàng ngày trong hệ sinh thái NEAR. Theo kịp sự phát triển của DeFi trên Near không phải là nhiệm vụ dễ dàng nhưng bài viết này sẽ tập trung vào dự án đáng chú ý nhất sắp ra mắt. Đó là Giao thức Flux, trình tổng hợp oracle chuỗi chéo đầu tiên được xây dựng trên NEAR.</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/d6/24/p61k0Pff_o.jpg\" alt=\"image host\"/></a>\n<p>Flux Protocol là một trong những ứng dụng DeFi hot nhất trên Near hiện tại. Đây là một trình tổng hợp oracle phi tập trung, không tin cậy, cho phép người dùng phân cấp các nguồn dữ liệu và các oracles trong đời thực của họ, do đó loại bỏ vấn đề oracle đơn lẻ và thêm một lớp dữ liệu đáng tin cậy.</p>\n<p>Vào ngày 20 tháng 5, Flux đã có một vòng hạt giống rất thành công với số tiền đáng kinh ngạc là $ 10,3M. Trong số các nhà đầu tư có Coinbase Ventures, Distributed Global và Coinfund. Coinbase Ventures cũng là một trong những nhà đầu tư chính của NEAR Protocol như chúng ta đều biết.</p>\n<p>Vào tháng 7, Flux đã công bố một chương trình Foreteller mà mọi người yêu thích Flux có thể tham gia và đóng góp nỗ lực của họ, từ việc tạo nội dung, meme, nhãn dán cho sự phát triển của cộng đồng dự án. Cùng lúc đó, thương vụ mua lại Flux đầu tiên cũng đã diễn ra. Pulse, một nền tảng thị trường dự đoán do cộng đồng sở hữu được xây dựng dựa trên Flux, đã mua lại Stake.gg, một nền tảng thị trường dự đoán toàn cầu, không cần sự cho phép và mã nguồn mở dành cho game thủ. Thông qua việc mua lại này, Stake.gg đã có được quyền truy cập vào hệ sinh thái Pulse và các lợi ích phân giải tự động của Giao thức Flux và giao diện người dùng IPFS chống kiểm duyệt. Vào ngày 15 tháng 9, Flux đã thông báo về sự ra mắt sắp tới trên Solana, một trong những blockchain phát triển nhanh nhất trong thế giới tiền điện tử. Sự tích hợp này mở ra một loạt các tính năng và chức năng trên Solana.</p>\n<h2>Giao thức Flux đã sẵn sàng để áp dụng hàng loạt!</h2>\n<p>\n<p>Với sự phát triển ấn tượng như đã nói ở trên, Flux Protocol sẽ sớm bùng nổ. Một trong những lý do cho điều này là UX / UI thân thiện với người dùng. Rõ ràng hơn, nhà phát triển chỉ cần 3 dòng mã để kết nối với Flux SDK. Nó sẽ giúp các nhà phát triển tiết kiệm rất nhiều thời gian để thử nghiệm hoặc phát triển các ngành dọc trên Flux từ cá cược thể thao đến thị trường dự đoán thời tiết. Trên thực tế, có rất nhiều dApp liên quan đến cổ phiếu, meme, thể thao điện tử được xây dựng nhờ vào công nghệ tiên tiến của Flux và UX dễ sử dụng của nó.</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/99/1b/obxXMjiC_o.jpg\" alt=\"image host\"/></a>\n<p>\n<p>Mặt khác, vì Flux được xây dựng trên NEAR, do đó, các nhà phát triển cũng có thể tận dụng lợi thế của thiết kế cơ sở hạ tầng hiện đại của nó như blockchain hiệu suất cao hơn, phí gas của NEAR Protocol thấp hơn đáng kể so với việc xây dựng trên oracles của Ethereum. Hơn nữa, các nhà phát triển cũng có thể sử dụng Cầu vồng của NEAR trong trường hợp họ muốn chuyển tài sản của mình giữa hai blockchain này và quá trình này cũng rất đơn giản và dễ sử dụng.</p>\n<p>Tóm lại, dự án tuyệt vời với một ý tưởng phát triển thú vị là những gì chúng ta có thể nói về Giao thức Flux. Một nhóm đặc biệt với các lập trình viên cạnh tranh cấp độ vô địch, những người biết công việc của họ và tận tâm phát triển dự án. Với sự phát triển nhanh chóng này, sẽ không có gì ngạc nhiên khi dự án Flux Protocol chắc chắn sẽ là dự án oracle hàng đầu phục vụ toàn bộ ngành công nghiệp blockchain một khi nó đi vào hoạt động!</p>\n<h2>Tham khảo:</h2> https://www.fluxprotocol.org/",
"json_metadata": "{\"tags\":[\"blockchaindata\",\"fluxprotocol\",\"vietnam\",\"oracles\",\"crypto\"],\"image\":[\"https://images2.imgbox.com/d6/24/p61k0Pff_o.jpg\",\"https://images2.imgbox.com/99/1b/obxXMjiC_o.jpg\"],\"links\":[\"https://www.fluxprotocol.org/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchaindata",
"permlink": "ly-do-flux-protocol-la-mot-trong-nhung-du-an-duoc-mong-cho-nhat",
"title": "LÝ DO FLUX PROTOCOL LÀ MỘT TRONG NHỮNG DỰ ÁN ĐƯỢC MONG CHỜ NHẤT"
}
],
"op_in_trx": 0,
"timestamp": "2021-10-25T06:54:42",
"trx_id": "5836fc76b6f48e23576ea9244fa8e4104f29336c",
"trx_in_block": 0,
"virtual_op": 0
}2021/10/18 06:56:18
2021/10/18 06:56:18
| author | nhanhoang91 |
| permlink | flux-protocol-nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near |
| voter | sqube |
| weight | 250 (2.50%) |
| Transaction Info | Block #58210465/Trx cea7cb1f09c6aec670092779620532f65b9c2fc0 |
View Raw JSON Data
{
"block": 58210465,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "flux-protocol-nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near",
"voter": "sqube",
"weight": 250
}
],
"op_in_trx": 0,
"timestamp": "2021-10-18T06:56:18",
"trx_id": "cea7cb1f09c6aec670092779620532f65b9c2fc0",
"trx_in_block": 41,
"virtual_op": 0
}nhanhoang91published a new post: flux-protocol-nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near2021/10/18 06:56:12
nhanhoang91published a new post: flux-protocol-nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near
2021/10/18 06:56:12
| author | nhanhoang91 |
| body | <p>Vào tối ngày 20 tháng 5, một dự án Oracle trên NEAR đã được nhiều quỹ lớn đầu tư với giá trị ước tính lên đến 10 triệu đô la, bao gồm Coinbase Ventures, Coinfund, IOSG Ventures, Distributed Global và một số quỹ khác. Với tham vọng trở thành nhà lãnh đạo mới trong lĩnh vực Blockchain Oracle, hãy cùng tìm hiểu sâu về <a href="https://www.fluxprotocol.org/">Flux Protocol</a> - dự án Oracle đầu tiên được phát triển trên NEAR!</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/20/80/VIMGn4go_o.png" alt="image host"/></a> <h2>Giao thức Flux là gì?</h2> <p>Giao thức Flux là một giao thức Oracle (trong Cơ sở hạ tầng lớp 2) giúp đưa dữ liệu ngoài chuỗi vào chuỗi khối và cung cấp dữ liệu cho các ứng dụng để lập chỉ mục, truy vấn và xác minh dữ liệu hoặc cung cấp dữ liệu trực tiếp cho dApps để sử dụng.</p> <p>Hiện tại, Flux Protocol đã và đang cung cấp dữ liệu cho hơn 10 dự án, với hơn 10.000 SDK, bao gồm hai dApp nổi bật trên NEAR Protocol đó là Stake GG và Pulse Prediction Market.</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/4f/71/GGSGbg3I_o.jpg" alt="image host"/></a> <h2>Điểm nổi bật của giao thức Flux</h2> <p>Hiện tại, về cách thức hoạt động của dự án, cơ chế của giao thức khá giống với các oracles khác trên thị trường.</p> <p>Oracle của Flux Protocol cũng nhận được dữ liệu trong cuộc sống thực thông qua hành động của trình xác thực - những người có sứ mệnh cung cấp dữ liệu ngoài chuỗi chính xác trên blockchain. Các Trình xác thực này phải thế chấp một lượng tài sản để đảm bảo rằng họ sẽ cung cấp dữ liệu thực tế chính xác cho chuỗi khối. Nếu họ cung cấp thông tin sai và bị phát hiện bởi những người xác nhận khác, họ có thể bị tranh chấp thông qua hệ thống bỏ phiếu và mất tài sản thế chấp nếu họ thua kiện.</p> <p>Hiện tại, Flux Protocol là oracle đầu tiên được phát triển trên nền tảng NEAR Protocol. Những dự án oracle trên NEAR còn có các ông lớn khác như ChainLink và Band Protocol, tuy nhiên sản phẩm của hai bên đều không chính thức chạy mainnet trên NEAR.</p> <p>Trong hệ sinh thái Giao thức NEAR, NEAR và Giao thức Flux là hai dự án đã được Coinbase Ventures đầu tư. Điều này chứng tỏ Coinbase rất chú trọng đến hệ sinh thái NEAR, và có thể Coinbase sẽ tiếp tục xuất hiện trong danh sách các nhà đầu tư của các dự án tiếp theo trên NEAR.</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/84/d0/7Vs2vmd9_o.jpg" alt="image host"/></a> <h2>Nhóm Dự án, Nhà đầu tư & Đối tác</h2> <h3>Các nhà đầu tư</h3> <p>Tuần này, Flux đã huy động thành công khoản đầu tư trị giá 10,3 triệu đô la thông qua vòng gọi vốn riêng của dự án, với 6 cái tên tham gia bao gồm Coinbase Ventures, Coinfund, IOSG Ventures, Distributed Global và một số quỹ khác.</p> <p>Có thể thấy, trong số những cái tên còn lại, có rất nhiều tên tuổi lớn, khiến cho dự án này đang rất hot ở thời điểm hiện tại.</p> <p>Với số lượng lớn người ủng hộ như vậy, dự án chắc chắn có tham vọng lớn và cực kỳ lạc quan vào thời điểm hiện tại.</p> <h3>Nhóm phát triển</h3> <p>Nhóm dự án cũng rất mạnh, với hầu hết các thành viên đều có kiến thức về phát triển web2 / web3 hoặc đã làm việc cho các dự án phổ biến như bZx, Harmony, Bitmax, v.v.</p> <h3>Đối tác</h3> <p>Hiện tại, dự án đã có hơn 10 đối tác dự án sử dụng oracle của họ.</p> <p><h3>Các dự án tương tự</h3></p> <p><strong>ChainLink (LINK):</strong> Mạng Oracle phi tập trung được thành lập vào năm 2017 bởi Công ty TNHH Hợp đồng Thông minh Chainlink, có trụ sở tại Quần đảo Cayman.</p> <p><strong>Giao thức băng tần (BAND):</strong> Giao thức chuỗi khối trong lĩnh vực quản lý dữ liệu. Đây là lớp Web 3.0 giải quyết các vấn đề về dữ liệu, độ tin cậy và chất lượng của thông tin dữ liệu cho các ứng dụng Web 3.0.</p> <p><strong>Kylin Protocol (KYL):</strong> Một mạng Oracle phi tập trung được xây dựng trên Polkadot Substrate.</p> <p><strong>Tellor (TRB):</strong> Mạng lưới Oracle phi tập trung được xây dựng trên Ethereum.</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/0d/e1/lJC0lHdZ_o.jpg" alt="image host"/></a> <p>Dự án Flux Protocol bao gồm tất cả những điều tốt nhất: đội ngũ kinh nghiệm, sản phẩm sáng tạo, ý tưởng xuất sắc, khởi đầu tuyệt vời! Chúng ta cần những ý tưởng hay, nhưng quan trọng hơn, chúng ta cũng cần những sản phẩm thực sự và được áp dụng rộng rãi và Flux Protocol có tất cả những ý tưởng đó! Pulse Market, Stake GG đang sử dụng chúng và nhiều thứ hay ho hơn nữa sắp ra mắt. Với sự chuẩn bị chu đáo từ Flux Team, rõ ràng công ty sẽ chiếm vị trí dẫn đầu trong lĩnh vực này trong tương lai gần!</p> |
| json metadata | {"tags":["fluxprotocol","vietnam","oracles","blockchaindata","crypto"],"image":["https://images2.imgbox.com/20/80/VIMGn4go_o.png","https://images2.imgbox.com/4f/71/GGSGbg3I_o.jpg","https://images2.imgbox.com/84/d0/7Vs2vmd9_o.jpg","https://images2.imgbox.com/0d/e1/lJC0lHdZ_o.jpg"],"links":["https://www.fluxprotocol.org/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | fluxprotocol |
| permlink | flux-protocol-nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near |
| title | FLUX PROTOCOL - NHỮNG ĐIỀU BẠN CẦN BIẾT VỀ DỰ ÁN ORACLE ĐẦU TIêN TRêN NEAR |
| Transaction Info | Block #58210463/Trx d1d0624cf93590f3566c3ff9a2710c439c19c67b |
View Raw JSON Data
{
"block": 58210463,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<p>Vào tối ngày 20 tháng 5, một dự án Oracle trên NEAR đã được nhiều quỹ lớn đầu tư với giá trị ước tính lên đến 10 triệu đô la, bao gồm Coinbase Ventures, Coinfund, IOSG Ventures, Distributed Global và một số quỹ khác. Với tham vọng trở thành nhà lãnh đạo mới trong lĩnh vực Blockchain Oracle, hãy cùng tìm hiểu sâu về <a href=\"https://www.fluxprotocol.org/\">Flux Protocol</a> - dự án Oracle đầu tiên được phát triển trên NEAR!</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/20/80/VIMGn4go_o.png\" alt=\"image host\"/></a>\n<h2>Giao thức Flux là gì?</h2>\n<p>Giao thức Flux là một giao thức Oracle (trong Cơ sở hạ tầng lớp 2) giúp đưa dữ liệu ngoài chuỗi vào chuỗi khối và cung cấp dữ liệu cho các ứng dụng để lập chỉ mục, truy vấn và xác minh dữ liệu hoặc cung cấp dữ liệu trực tiếp cho dApps để sử dụng.</p>\n<p>Hiện tại, Flux Protocol đã và đang cung cấp dữ liệu cho hơn 10 dự án, với hơn 10.000 SDK, bao gồm hai dApp nổi bật trên NEAR Protocol đó là Stake GG và Pulse Prediction Market.</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/4f/71/GGSGbg3I_o.jpg\" alt=\"image host\"/></a>\n<h2>Điểm nổi bật của giao thức Flux</h2>\n<p>Hiện tại, về cách thức hoạt động của dự án, cơ chế của giao thức khá giống với các oracles khác trên thị trường.</p>\n<p>Oracle của Flux Protocol cũng nhận được dữ liệu trong cuộc sống thực thông qua hành động của trình xác thực - những người có sứ mệnh cung cấp dữ liệu ngoài chuỗi chính xác trên blockchain. Các Trình xác thực này phải thế chấp một lượng tài sản để đảm bảo rằng họ sẽ cung cấp dữ liệu thực tế chính xác cho chuỗi khối. Nếu họ cung cấp thông tin sai và bị phát hiện bởi những người xác nhận khác, họ có thể bị tranh chấp thông qua hệ thống bỏ phiếu và mất tài sản thế chấp nếu họ thua kiện.</p>\n<p>Hiện tại, Flux Protocol là oracle đầu tiên được phát triển trên nền tảng NEAR Protocol. Những dự án oracle trên NEAR còn có các ông lớn khác như ChainLink và Band Protocol, tuy nhiên sản phẩm của hai bên đều không chính thức chạy mainnet trên NEAR.</p>\n<p>Trong hệ sinh thái Giao thức NEAR, NEAR và Giao thức Flux là hai dự án đã được Coinbase Ventures đầu tư. Điều này chứng tỏ Coinbase rất chú trọng đến hệ sinh thái NEAR, và có thể Coinbase sẽ tiếp tục xuất hiện trong danh sách các nhà đầu tư của các dự án tiếp theo trên NEAR.</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/84/d0/7Vs2vmd9_o.jpg\" alt=\"image host\"/></a>\n<h2>Nhóm Dự án, Nhà đầu tư & Đối tác</h2>\n<h3>Các nhà đầu tư</h3>\n<p>Tuần này, Flux đã huy động thành công khoản đầu tư trị giá 10,3 triệu đô la thông qua vòng gọi vốn riêng của dự án, với 6 cái tên tham gia bao gồm Coinbase Ventures, Coinfund, IOSG Ventures, Distributed Global và một số quỹ khác.</p>\n<p>Có thể thấy, trong số những cái tên còn lại, có rất nhiều tên tuổi lớn, khiến cho dự án này đang rất hot ở thời điểm hiện tại.</p>\n<p>Với số lượng lớn người ủng hộ như vậy, dự án chắc chắn có tham vọng lớn và cực kỳ lạc quan vào thời điểm hiện tại.</p>\n<h3>Nhóm phát triển</h3>\n<p>Nhóm dự án cũng rất mạnh, với hầu hết các thành viên đều có kiến thức về phát triển web2 / web3 hoặc đã làm việc cho các dự án phổ biến như bZx, Harmony, Bitmax, v.v.</p>\n<h3>Đối tác</h3>\n<p>Hiện tại, dự án đã có hơn 10 đối tác dự án sử dụng oracle của họ.</p>\n<p><h3>Các dự án tương tự</h3></p>\n<p><strong>ChainLink (LINK):</strong> Mạng Oracle phi tập trung được thành lập vào năm 2017 bởi Công ty TNHH Hợp đồng Thông minh Chainlink, có trụ sở tại Quần đảo Cayman.</p>\n<p><strong>Giao thức băng tần (BAND):</strong> Giao thức chuỗi khối trong lĩnh vực quản lý dữ liệu. Đây là lớp Web 3.0 giải quyết các vấn đề về dữ liệu, độ tin cậy và chất lượng của thông tin dữ liệu cho các ứng dụng Web 3.0.</p>\n<p><strong>Kylin Protocol (KYL):</strong> Một mạng Oracle phi tập trung được xây dựng trên Polkadot Substrate.</p>\n<p><strong>Tellor (TRB):</strong> Mạng lưới Oracle phi tập trung được xây dựng trên Ethereum.</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/0d/e1/lJC0lHdZ_o.jpg\" alt=\"image host\"/></a>\n<p>Dự án Flux Protocol bao gồm tất cả những điều tốt nhất: đội ngũ kinh nghiệm, sản phẩm sáng tạo, ý tưởng xuất sắc, khởi đầu tuyệt vời! Chúng ta cần những ý tưởng hay, nhưng quan trọng hơn, chúng ta cũng cần những sản phẩm thực sự và được áp dụng rộng rãi và Flux Protocol có tất cả những ý tưởng đó! Pulse Market, Stake GG đang sử dụng chúng và nhiều thứ hay ho hơn nữa sắp ra mắt. Với sự chuẩn bị chu đáo từ Flux Team, rõ ràng công ty sẽ chiếm vị trí dẫn đầu trong lĩnh vực này trong tương lai gần!</p>",
"json_metadata": "{\"tags\":[\"fluxprotocol\",\"vietnam\",\"oracles\",\"blockchaindata\",\"crypto\"],\"image\":[\"https://images2.imgbox.com/20/80/VIMGn4go_o.png\",\"https://images2.imgbox.com/4f/71/GGSGbg3I_o.jpg\",\"https://images2.imgbox.com/84/d0/7Vs2vmd9_o.jpg\",\"https://images2.imgbox.com/0d/e1/lJC0lHdZ_o.jpg\"],\"links\":[\"https://www.fluxprotocol.org/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "fluxprotocol",
"permlink": "flux-protocol-nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near",
"title": "FLUX PROTOCOL - NHỮNG ĐIỀU BẠN CẦN BIẾT VỀ DỰ ÁN ORACLE ĐẦU TIêN TRêN NEAR"
}
],
"op_in_trx": 0,
"timestamp": "2021-10-18T06:56:12",
"trx_id": "d1d0624cf93590f3566c3ff9a2710c439c19c67b",
"trx_in_block": 3,
"virtual_op": 0
}nhanhoang91upvoted (100.00%) @nhanhoang91 / why-am-i-so-bullish-on-flux-protocol2021/10/06 06:31:00
nhanhoang91upvoted (100.00%) @nhanhoang91 / why-am-i-so-bullish-on-flux-protocol
2021/10/06 06:31:00
| author | nhanhoang91 |
| permlink | why-am-i-so-bullish-on-flux-protocol |
| voter | nhanhoang91 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #57866375/Trx bbf3b0b25c55567951b14fd781498fb510ff10b2 |
View Raw JSON Data
{
"block": 57866375,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "why-am-i-so-bullish-on-flux-protocol",
"voter": "nhanhoang91",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2021-10-06T06:31:00",
"trx_id": "bbf3b0b25c55567951b14fd781498fb510ff10b2",
"trx_in_block": 9,
"virtual_op": 0
}squbeupvoted (1.00%) @nhanhoang91 / why-am-i-so-bullish-on-flux-protocol2021/10/06 06:27:42
squbeupvoted (1.00%) @nhanhoang91 / why-am-i-so-bullish-on-flux-protocol
2021/10/06 06:27:42
| author | nhanhoang91 |
| permlink | why-am-i-so-bullish-on-flux-protocol |
| voter | sqube |
| weight | 100 (1.00%) |
| Transaction Info | Block #57866311/Trx 7bf701f9cb222e0aaef62eabcf513fd944c822b7 |
View Raw JSON Data
{
"block": 57866311,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "why-am-i-so-bullish-on-flux-protocol",
"voter": "sqube",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2021-10-06T06:27:42",
"trx_id": "7bf701f9cb222e0aaef62eabcf513fd944c822b7",
"trx_in_block": 6,
"virtual_op": 0
}nhanhoang91published a new post: why-am-i-so-bullish-on-flux-protocol2021/10/06 06:27:36
nhanhoang91published a new post: why-am-i-so-bullish-on-flux-protocol
2021/10/06 06:27:36
| author | nhanhoang91 |
| body | <h2>One of the fastest growing projects</h2> <p>The best DeFi tools and applications are born every day in the Near ecosystem. Keeping up with the development of DeFi on Near is no easy task but this article will focus on the most worth-noting project that going to be launched soon. That is <a href="https://www.fluxprotocol.org/">Flux Protocol</a>, the first cross-chain oracle aggregator built on NEAR.</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/8c/62/ujbDKUNQ_o.png" alt="image host"/></a> <p>Flux Protocol is one of the hottest DeFi apps on Near currently. It is a decentralized, trustless oracle aggregator that allows users to decentralize their real-life data sources and oracles, thus eliminating the single oracle problem and adding a layer of trusted data.</p> <p>On May 20th, Flux had a very successful seed round with an amazing amount of $10.3M. Among the investors are Coinbase Ventures, Distributed Global and Coinfund. Coinbase Ventures is also one of the main investors of NEAR Protocol as we are all known.</p> <p>In July, Flux announced a Foreteller program which evert Flux's lovers can participate and contribute their efforts ranged from making content, meme, stickers to the growth of the project's community. At the meantime, the first Flux acquisition also took place. Pulse, a community-owned prediction market platform built on top of Flux, has acquired Stake.gg, an open source, permissionless and global prediction market platform for gamers. Through this acquisition, Stake.gg gained access to the Pulse ecosystem and the automatic resolution benefits of Flux Protocol and the censorship-resistant IPFS user interface, just to name a few. On September 15, Flux announced the upcoming launch on Solana one of the fastest growing blockchains in the crypto world. This integration unlocks a wide range of features and functions on Solana.</p> <h2>Flux Protocol is ready for mass adoption!</h2><p> <p>With the impressive development as said above, Flux Protocol is set to explode very soon. One of the reason for this is its friendly-user UX/UI. More clearly, it only takes 3 lines of code for developers to connect to Flux SDK. It will help developers saving a lot of time to test or develop verticals on Flux from sports betting to weather prediction market. In fact, there are a lot of <a href="https://pulsemarket.eth.link/#!/">dApps</a> regarding stocks, memes, esports built thanks to Flux's advanced technology and its easy-to-use UX. <p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/08/78/CoB0vmjW_o.png" alt="image host"/></a><p> On the other hand, because Flux is built on NEAR, hence, developers can also take advantage of its modern infrastructure design such as higher performance blockchain, significantly lower gas fees of NEAR Protocol compared with building on Ethereum's oracles. Moreover, developers can also use NEAR's Rainbow Bridge in case they want to transfer their assets between these two blockchains and this process is very simple and easy to use as well.</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/9b/6b/D1h5y8zH_o.png" alt="image host"/></a><p> <p>In conclusion, great project with an interesting idea of development is what we can say about Flux Protocol. An extraordinary team with championship-level competitive programmers who know their job and are dedicated to develop the project. With this fast development, there will be no surprise that Flux Protocol project surely will be the top oracle project that serve the entire blockchain industry once it is going live!</p> |
| json metadata | {"tags":["fluxprotocol","nearblockchain","coinbase","oracle","decentralized"],"image":["https://images2.imgbox.com/8c/62/ujbDKUNQ_o.png","https://images2.imgbox.com/08/78/CoB0vmjW_o.png","https://images2.imgbox.com/9b/6b/D1h5y8zH_o.png"],"links":["https://www.fluxprotocol.org/","https://pulsemarket.eth.link/#!/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | fluxprotocol |
| permlink | why-am-i-so-bullish-on-flux-protocol |
| title | WHY AM I SO BULLISH ON FLUX PROTOCOL |
| Transaction Info | Block #57866309/Trx 3b173d5b6ea26253508c59e87dd9841c113c2f7b |
View Raw JSON Data
{
"block": 57866309,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<h2>One of the fastest growing projects</h2>\n<p>The best DeFi tools and applications are born every day in the Near ecosystem. Keeping up with the development of DeFi on Near is no easy task but this article will focus on the most worth-noting project that going to be launched soon. That is <a href=\"https://www.fluxprotocol.org/\">Flux Protocol</a>, the first cross-chain oracle aggregator built on NEAR.</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/8c/62/ujbDKUNQ_o.png\" alt=\"image host\"/></a>\n<p>Flux Protocol is one of the hottest DeFi apps on Near currently. It is a decentralized, trustless oracle aggregator that allows users to decentralize their real-life data sources and oracles, thus eliminating the single oracle problem and adding a layer of trusted data.</p>\n<p>On May 20th, Flux had a very successful seed round with an amazing amount of $10.3M. Among the investors are Coinbase Ventures, Distributed Global and Coinfund. Coinbase Ventures is also one of the main investors of NEAR Protocol as we are all known.</p>\n<p>In July, Flux announced a Foreteller program which evert Flux's lovers can participate and contribute their efforts ranged from making content, meme, stickers to the growth of the project's community. At the meantime, the first Flux acquisition also took place. Pulse, a community-owned prediction market platform built on top of Flux, has acquired Stake.gg, an open source, permissionless and global prediction market platform for gamers. Through this acquisition, Stake.gg gained access to the Pulse ecosystem and the automatic resolution benefits of Flux Protocol and the censorship-resistant IPFS user interface, just to name a few. On September 15, Flux announced the upcoming launch on Solana one of the fastest growing blockchains in the crypto world. This integration unlocks a wide range of features and functions on Solana.</p>\n<h2>Flux Protocol is ready for mass adoption!</h2><p>\n<p>With the impressive development as said above, Flux Protocol is set to explode very soon. One of the reason for this is its friendly-user UX/UI. More clearly, it only takes 3 lines of code for developers to connect to Flux SDK. It will help developers saving a lot of time to test or develop verticals on Flux from sports betting to weather prediction market. In fact, there are a lot of <a href=\"https://pulsemarket.eth.link/#!/\">dApps</a> regarding stocks, memes, esports built thanks to Flux's advanced technology and its easy-to-use UX. <p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/08/78/CoB0vmjW_o.png\" alt=\"image host\"/></a><p>\nOn the other hand, because Flux is built on NEAR, hence, developers can also take advantage of its modern infrastructure design such as higher performance blockchain, significantly lower gas fees of NEAR Protocol compared with building on Ethereum's oracles. Moreover, developers can also use NEAR's Rainbow Bridge in case they want to transfer their assets between these two blockchains and this process is very simple and easy to use as well.</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/9b/6b/D1h5y8zH_o.png\" alt=\"image host\"/></a><p>\n<p>In conclusion, great project with an interesting idea of development is what we can say about Flux Protocol. An extraordinary team with championship-level competitive programmers who know their job and are dedicated to develop the project. With this fast development, there will be no surprise that Flux Protocol project surely will be the top oracle project that serve the entire blockchain industry once it is going live!</p>",
"json_metadata": "{\"tags\":[\"fluxprotocol\",\"nearblockchain\",\"coinbase\",\"oracle\",\"decentralized\"],\"image\":[\"https://images2.imgbox.com/8c/62/ujbDKUNQ_o.png\",\"https://images2.imgbox.com/08/78/CoB0vmjW_o.png\",\"https://images2.imgbox.com/9b/6b/D1h5y8zH_o.png\"],\"links\":[\"https://www.fluxprotocol.org/\",\"https://pulsemarket.eth.link/#!/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "fluxprotocol",
"permlink": "why-am-i-so-bullish-on-flux-protocol",
"title": "WHY AM I SO BULLISH ON FLUX PROTOCOL"
}
],
"op_in_trx": 0,
"timestamp": "2021-10-06T06:27:36",
"trx_id": "3b173d5b6ea26253508c59e87dd9841c113c2f7b",
"trx_in_block": 3,
"virtual_op": 0
}2021/10/06 05:41:06
2021/10/06 05:41:06
| author | nhanhoang91 |
| permlink | an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol |
| voter | sqube |
| weight | 100 (1.00%) |
| Transaction Info | Block #57865385/Trx e950a39877bbfdd2c0bc7d9be81a959073e8e8bc |
View Raw JSON Data
{
"block": 57865385,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol",
"voter": "sqube",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2021-10-06T05:41:06",
"trx_id": "e950a39877bbfdd2c0bc7d9be81a959073e8e8bc",
"trx_in_block": 6,
"virtual_op": 0
}nhanhoang91published a new post: an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol2021/10/06 05:41:00
nhanhoang91published a new post: an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol
2021/10/06 05:41:00
| author | nhanhoang91 |
| body | @@ -492,16 +492,56 @@ What is +%3Ca href=%22https://www.fluxprotocol.org/%22%3E Flux Pro @@ -545,16 +545,20 @@ Protocol +%3C/a%3E ?%3C/h1%3E%0A%3C |
| json metadata | {"tags":["oracles","blockchaindata","crypto","cryptocurrency"],"image":["https://images2.imgbox.com/3f/1a/ZrvB7CH7_o.png","https://images2.imgbox.com/97/14/SFE3ZV2Z_o.png","https://images2.imgbox.com/97/8a/am0GAa5d_o.png","https://images2.imgbox.com/3b/5b/umLkrZnU_o.jpg","https://images2.imgbox.com/46/73/hcgf6uhK_o.png"],"links":["https://imgbox.com/ZrvB7CH7","https://www.fluxprotocol.org/","https://imgbox.com/SFE3ZV2Z","https://imgbox.com/am0GAa5d","https://imgbox.com/umLkrZnU","https://imgbox.com/hcgf6uhK"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | fluxprotocol |
| permlink | an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol |
| title | AN OVERVIEW OF FLUX PROTOCOL, THE FIRST ORACLE PROJECT BUILT ON NEAR PROTOCOL |
| Transaction Info | Block #57865383/Trx 012a2131b196581ab1fef4b620834013a00ce05c |
View Raw JSON Data
{
"block": 57865383,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "@@ -492,16 +492,56 @@\n What is \n+%3Ca href=%22https://www.fluxprotocol.org/%22%3E\n Flux Pro\n@@ -545,16 +545,20 @@\n Protocol\n+%3C/a%3E\n ?%3C/h1%3E%0A%3C\n",
"json_metadata": "{\"tags\":[\"oracles\",\"blockchaindata\",\"crypto\",\"cryptocurrency\"],\"image\":[\"https://images2.imgbox.com/3f/1a/ZrvB7CH7_o.png\",\"https://images2.imgbox.com/97/14/SFE3ZV2Z_o.png\",\"https://images2.imgbox.com/97/8a/am0GAa5d_o.png\",\"https://images2.imgbox.com/3b/5b/umLkrZnU_o.jpg\",\"https://images2.imgbox.com/46/73/hcgf6uhK_o.png\"],\"links\":[\"https://imgbox.com/ZrvB7CH7\",\"https://www.fluxprotocol.org/\",\"https://imgbox.com/SFE3ZV2Z\",\"https://imgbox.com/am0GAa5d\",\"https://imgbox.com/umLkrZnU\",\"https://imgbox.com/hcgf6uhK\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "fluxprotocol",
"permlink": "an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol",
"title": "AN OVERVIEW OF FLUX PROTOCOL, THE FIRST ORACLE PROJECT BUILT ON NEAR PROTOCOL"
}
],
"op_in_trx": 0,
"timestamp": "2021-10-06T05:41:00",
"trx_id": "012a2131b196581ab1fef4b620834013a00ce05c",
"trx_in_block": 2,
"virtual_op": 0
}2021/10/06 05:40:03
2021/10/06 05:40:03
| author | nhanhoang91 |
| permlink | an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol |
| voter | sqube |
| weight | 100 (1.00%) |
| Transaction Info | Block #57865364/Trx 5cfa7f654fb268a643c24029358a91e99c744a05 |
View Raw JSON Data
{
"block": 57865364,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol",
"voter": "sqube",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2021-10-06T05:40:03",
"trx_id": "5cfa7f654fb268a643c24029358a91e99c744a05",
"trx_in_block": 9,
"virtual_op": 0
}nhanhoang91published a new post: an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol2021/10/06 05:39:57
nhanhoang91published a new post: an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol
2021/10/06 05:39:57
| author | nhanhoang91 |
| body | @@ -1260,15 +1260,9 @@ ocol -’ +' s or |
| json metadata | {"tags":["oracles","blockchaindata","crypto","cryptocurrency"],"image":["https://images2.imgbox.com/3f/1a/ZrvB7CH7_o.png","https://images2.imgbox.com/97/14/SFE3ZV2Z_o.png","https://images2.imgbox.com/97/8a/am0GAa5d_o.png","https://images2.imgbox.com/3b/5b/umLkrZnU_o.jpg","https://images2.imgbox.com/46/73/hcgf6uhK_o.png"],"links":["https://imgbox.com/ZrvB7CH7","https://imgbox.com/SFE3ZV2Z","https://imgbox.com/am0GAa5d","https://imgbox.com/umLkrZnU","https://imgbox.com/hcgf6uhK","https://www.fluxprotocol.org/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | fluxprotocol |
| permlink | an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol |
| title | AN OVERVIEW OF FLUX PROTOCOL, THE FIRST ORACLE PROJECT BUILT ON NEAR PROTOCOL |
| Transaction Info | Block #57865362/Trx 52f2f52aeac472946e47869a4e40cb097ea174c4 |
View Raw JSON Data
{
"block": 57865362,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "@@ -1260,15 +1260,9 @@\n ocol\n-’\n+'\n s or\n",
"json_metadata": "{\"tags\":[\"oracles\",\"blockchaindata\",\"crypto\",\"cryptocurrency\"],\"image\":[\"https://images2.imgbox.com/3f/1a/ZrvB7CH7_o.png\",\"https://images2.imgbox.com/97/14/SFE3ZV2Z_o.png\",\"https://images2.imgbox.com/97/8a/am0GAa5d_o.png\",\"https://images2.imgbox.com/3b/5b/umLkrZnU_o.jpg\",\"https://images2.imgbox.com/46/73/hcgf6uhK_o.png\"],\"links\":[\"https://imgbox.com/ZrvB7CH7\",\"https://imgbox.com/SFE3ZV2Z\",\"https://imgbox.com/am0GAa5d\",\"https://imgbox.com/umLkrZnU\",\"https://imgbox.com/hcgf6uhK\",\"https://www.fluxprotocol.org/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "fluxprotocol",
"permlink": "an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol",
"title": "AN OVERVIEW OF FLUX PROTOCOL, THE FIRST ORACLE PROJECT BUILT ON NEAR PROTOCOL"
}
],
"op_in_trx": 0,
"timestamp": "2021-10-06T05:39:57",
"trx_id": "52f2f52aeac472946e47869a4e40cb097ea174c4",
"trx_in_block": 10,
"virtual_op": 0
}2021/09/29 12:46:12
2021/09/29 12:46:12
| author | nhanhoang91 |
| permlink | nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol |
| voter | nhanhoang91 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #57673477/Trx d8a0b5680bf970013c968e317744993787553179 |
View Raw JSON Data
{
"block": 57673477,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol",
"voter": "nhanhoang91",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2021-09-29T12:46:12",
"trx_id": "d8a0b5680bf970013c968e317744993787553179",
"trx_in_block": 8,
"virtual_op": 0
}nhanhoang91published a new post: nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol2021/09/29 06:13:18
nhanhoang91published a new post: nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol
2021/09/29 06:13:18
| author | nhanhoang91 |
| body | <p><a href="https://www.fluxprotocol.org/">Giao thức Flux</a> là một nền tảng oracle blockchain bất khả tri được xây dựng trên NEAR giúp mang dữ liệu ngoài chuỗi sang trên chuỗi. Nó còn được gọi là lớp 2 của cơ sở hạ tầng blockchain. Một cách rõ ràng hơn, nó cung cấp dữ liệu thực để các ứng dụng lập chỉ mục, truy vấn và xác minh hoặc trực tiếp đưa nó đến dApps để sử dụng. Tại thời điểm bài viết này, Flux có hơn 10.000 SDK và cung cấp dữ liệu cho hơn 10 dự án như Pulse Prediction Market và Stake GG. Hơn nữa, hơn 1.000 dự án tiền điện tử có thể tận dụng điều kỳ diệu của dự án.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/e7/ec/iPMImTJZ_o.jpg" alt="image host"/></a> <h2>Nó hoạt động như thế nào?</h2> <p>Giống như các dự án oracles khác, nhiệm vụ của Flux Protocol là đưa dữ liệu ngoài chuỗi vào blockchain thông qua trình xác thực. Cụ thể, người xác nhận cần phải thế chấp tài sản của họ để đảm bảo rằng mọi dữ liệu ngoài chuỗi mà họ đưa vào chuỗi đều đáng tin cậy. Ngược lại, họ sẽ bị tranh chấp thông qua hệ thống bỏ phiếu và mất tài sản thế chấp trong trường hợp họ cung cấp dữ liệu sai. Mặc dù có những oracles khác đã có trên NEAR như Chainlink và Band Protocol, tuy nhiên, chúng vẫn chưa được khởi chạy mainnet trên NEAR. Do đó, Flux Protocol trở thành oracles quan trọng nhất trong hệ sinh thái của NEAR.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/4f/6b/gLd1n3IE_o.jpg" alt="image host"/></a> <p> </p> <h2>Ưu điểm của Giao thức Flux</h2> <p>Giao thức Flux có nhiều ưu điểm so với các dự án oracle khác. Flux giảm đáng kể thời gian và nỗ lực cần thiết để xây dựng các ứng dụng yêu cầu dữ liệu phức tạp ngoài chuỗi và trên chuỗi nhờ SDK thân thiện với người dùng của nó, chỉ cần ba dòng mã để kết nối. Một minh họa cho điều này là tính năng tổng hợp của Oracle, có thể giúp người dùng kết nối các nhà khai thác chính trên tiền điện tử vào một nơi với sự đảm bảo kinh tế. Nó cũng có cơ chế tranh chấp đa dạng với đặt cược, bỏ phiếu và đo lường thống kê. Điều này sẽ làm tăng đáng kể chất lượng đầu ra cuối cùng, điều quan trọng nhất của một oracles.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/92/96/hq2ISBpz_o.jpg" alt="image host"/></a> <p> </p> <p>Quá trình chọn lọc nguồn dữ liệu cũng được sử dụng để quyết định xem một dự án oracle có đáng để thử hay không. Trong đó, nguồn dữ liệu là sự kết hợp của tất cả mọi thứ như nguồn con người hoặc hợp đồng thông minh hoặc nó có thể là tất cả mọi thứ. Do đó, không giống như các nguồn khác, Flux Protocol sử dụng cả ba nguồn dữ liệu có thể có, đó là con người, API và oracles để truy xuất kết quả đáng tin cậy và không bỏ lỡ bất kỳ dữ liệu quan trọng nào.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/94/b6/2GVHYEgP_o.jpg" alt="image host"/></a> <p> </p> <h2>Lộ trình</h2> <p>Giai đoạn đầu tiên của dự án tập trung vào việc phát triển và hoàn thiện Mainnet beta bao gồm việc hoàn thiện SDK Flux, Ứng dụng nguồn mở Flux và Nút chỉ mục Flux. Các nhiệm vụ khác như Triển khai giao thức Flux V0.5 trên Mainnet; Triển khai nút chỉ số Flux; Cầu DAI từ Ethereum sang NEAR, v.v.; đã được hoàn thành vào năm 2020. Trong Giai đoạn hai, dự án bắt đầu cho phép các dự án khác sử dụng sản phẩm của mình trong giao thức / dApps. Các bước cụ thể trong lộ trình như sau: Triển khai Flux Protocol V1 trên Mainnet - Triển khai Flux Oracle, Thực hiện các hợp đồng quản trị Flux, Đưa các chương trình Beta lên mạng chính, Quantstamp Security kiểm tra tất cả các hợp đồng, Triển khai Flux Token. Tất cả các bước này sẽ dần được hoàn thành trong năm nay trước khi dự án chuyển sang giai đoạn 3, đó là công việc đưa quyền kiểm soát giao thức vào tay người dùng, thực hiện phân quyền của giao thức.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/3e/1d/xQUb6vtx_o.jpg" alt="image host"/></a> <p>Để kết luận, cùng với NEAR, Flux Protocol cũng được hỗ trợ bởi Coinbase Ventures, điều này nói lên tầm quan trọng của dự án trong hệ sinh thái của NEAR. Với lộ trình rõ ràng và công nghệ đổi mới, Flux Protocol dự kiến sẽ là dự án thay đổi cuộc chơi tiếp theo trong thị trường blockchain đang bùng nổ.</p> |
| json metadata | {"tags":["blockchain","crypto","fluxprotocol","blockchaindata","oracles"],"image":["https://images2.imgbox.com/e7/ec/iPMImTJZ_o.jpg","https://images2.imgbox.com/4f/6b/gLd1n3IE_o.jpg","https://images2.imgbox.com/92/96/hq2ISBpz_o.jpg","https://images2.imgbox.com/94/b6/2GVHYEgP_o.jpg","https://images2.imgbox.com/3e/1d/xQUb6vtx_o.jpg"],"links":["https://www.fluxprotocol.org/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | blockchaindatabase |
| permlink | nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol |
| title | NHỮNG ĐIỀU BẠN CẦN BIẾT VỀ DỰ ÁN ORACLE ĐẦU TIÊN TRÊN NEAR - FLUX PROTOCOL |
| Transaction Info | Block #57665668/Trx ae719f4b6110cc2b0ef555e3a8702fea1e1c7c2c |
View Raw JSON Data
{
"block": 57665668,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<p><a href=\"https://www.fluxprotocol.org/\">Giao thức Flux</a> là một nền tảng oracle blockchain bất khả tri được xây dựng trên NEAR giúp mang dữ liệu ngoài chuỗi sang trên chuỗi. Nó còn được gọi là lớp 2 của cơ sở hạ tầng blockchain. Một cách rõ ràng hơn, nó cung cấp dữ liệu thực để các ứng dụng lập chỉ mục, truy vấn và xác minh hoặc trực tiếp đưa nó đến dApps để sử dụng. Tại thời điểm bài viết này, Flux có hơn 10.000 SDK và cung cấp dữ liệu cho hơn 10 dự án như Pulse Prediction Market và Stake GG. Hơn nữa, hơn 1.000 dự án tiền điện tử có thể tận dụng điều kỳ diệu của dự án.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/e7/ec/iPMImTJZ_o.jpg\" alt=\"image host\"/></a>\n<h2>Nó hoạt động như thế nào?</h2>\n<p>Giống như các dự án oracles khác, nhiệm vụ của Flux Protocol là đưa dữ liệu ngoài chuỗi vào blockchain thông qua trình xác thực. Cụ thể, người xác nhận cần phải thế chấp tài sản của họ để đảm bảo rằng mọi dữ liệu ngoài chuỗi mà họ đưa vào chuỗi đều đáng tin cậy. Ngược lại, họ sẽ bị tranh chấp thông qua hệ thống bỏ phiếu và mất tài sản thế chấp trong trường hợp họ cung cấp dữ liệu sai. Mặc dù có những oracles khác đã có trên NEAR như Chainlink và Band Protocol, tuy nhiên, chúng vẫn chưa được khởi chạy mainnet trên NEAR. Do đó, Flux Protocol trở thành oracles quan trọng nhất trong hệ sinh thái của NEAR.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/4f/6b/gLd1n3IE_o.jpg\" alt=\"image host\"/></a>\n<p> </p>\n<h2>Ưu điểm của Giao thức Flux</h2>\n<p>Giao thức Flux có nhiều ưu điểm so với các dự án oracle khác. Flux giảm đáng kể thời gian và nỗ lực cần thiết để xây dựng các ứng dụng yêu cầu dữ liệu phức tạp ngoài chuỗi và trên chuỗi nhờ SDK thân thiện với người dùng của nó, chỉ cần ba dòng mã để kết nối. Một minh họa cho điều này là tính năng tổng hợp của Oracle, có thể giúp người dùng kết nối các nhà khai thác chính trên tiền điện tử vào một nơi với sự đảm bảo kinh tế. Nó cũng có cơ chế tranh chấp đa dạng với đặt cược, bỏ phiếu và đo lường thống kê. Điều này sẽ làm tăng đáng kể chất lượng đầu ra cuối cùng, điều quan trọng nhất của một oracles.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/92/96/hq2ISBpz_o.jpg\" alt=\"image host\"/></a>\n<p> </p>\n<p>Quá trình chọn lọc nguồn dữ liệu cũng được sử dụng để quyết định xem một dự án oracle có đáng để thử hay không. Trong đó, nguồn dữ liệu là sự kết hợp của tất cả mọi thứ như nguồn con người hoặc hợp đồng thông minh hoặc nó có thể là tất cả mọi thứ. Do đó, không giống như các nguồn khác, Flux Protocol sử dụng cả ba nguồn dữ liệu có thể có, đó là con người, API và oracles để truy xuất kết quả đáng tin cậy và không bỏ lỡ bất kỳ dữ liệu quan trọng nào.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/94/b6/2GVHYEgP_o.jpg\" alt=\"image host\"/></a>\n<p> </p>\n<h2>Lộ trình</h2>\n<p>Giai đoạn đầu tiên của dự án tập trung vào việc phát triển và hoàn thiện Mainnet beta bao gồm việc hoàn thiện SDK Flux, Ứng dụng nguồn mở Flux và Nút chỉ mục Flux. Các nhiệm vụ khác như Triển khai giao thức Flux V0.5 trên Mainnet; Triển khai nút chỉ số Flux; Cầu DAI từ Ethereum sang NEAR, v.v.; đã được hoàn thành vào năm 2020. Trong Giai đoạn hai, dự án bắt đầu cho phép các dự án khác sử dụng sản phẩm của mình trong giao thức / dApps. Các bước cụ thể trong lộ trình như sau: Triển khai Flux Protocol V1 trên Mainnet - Triển khai Flux Oracle, Thực hiện các hợp đồng quản trị Flux, Đưa các chương trình Beta lên mạng chính, Quantstamp Security kiểm tra tất cả các hợp đồng, Triển khai Flux Token. Tất cả các bước này sẽ dần được hoàn thành trong năm nay trước khi dự án chuyển sang giai đoạn 3, đó là công việc đưa quyền kiểm soát giao thức vào tay người dùng, thực hiện phân quyền của giao thức.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/3e/1d/xQUb6vtx_o.jpg\" alt=\"image host\"/></a>\n<p>Để kết luận, cùng với NEAR, Flux Protocol cũng được hỗ trợ bởi Coinbase Ventures, điều này nói lên tầm quan trọng của dự án trong hệ sinh thái của NEAR. Với lộ trình rõ ràng và công nghệ đổi mới, Flux Protocol dự kiến sẽ là dự án thay đổi cuộc chơi tiếp theo trong thị trường blockchain đang bùng nổ.</p>",
"json_metadata": "{\"tags\":[\"blockchain\",\"crypto\",\"fluxprotocol\",\"blockchaindata\",\"oracles\"],\"image\":[\"https://images2.imgbox.com/e7/ec/iPMImTJZ_o.jpg\",\"https://images2.imgbox.com/4f/6b/gLd1n3IE_o.jpg\",\"https://images2.imgbox.com/92/96/hq2ISBpz_o.jpg\",\"https://images2.imgbox.com/94/b6/2GVHYEgP_o.jpg\",\"https://images2.imgbox.com/3e/1d/xQUb6vtx_o.jpg\"],\"links\":[\"https://www.fluxprotocol.org/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchaindatabase",
"permlink": "nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol",
"title": "NHỮNG ĐIỀU BẠN CẦN BIẾT VỀ DỰ ÁN ORACLE ĐẦU TIÊN TRÊN NEAR - FLUX PROTOCOL"
}
],
"op_in_trx": 0,
"timestamp": "2021-09-29T06:13:18",
"trx_id": "ae719f4b6110cc2b0ef555e3a8702fea1e1c7c2c",
"trx_in_block": 6,
"virtual_op": 0
}2021/09/29 06:12:48
2021/09/29 06:12:48
| author | nhanhoang91 |
| permlink | nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol |
| voter | sqube |
| weight | 100 (1.00%) |
| Transaction Info | Block #57665658/Trx 7677a9f16458f20f0dbaa13408a4ba6a47f35f10 |
View Raw JSON Data
{
"block": 57665658,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol",
"voter": "sqube",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2021-09-29T06:12:48",
"trx_id": "7677a9f16458f20f0dbaa13408a4ba6a47f35f10",
"trx_in_block": 8,
"virtual_op": 0
}nhanhoang91published a new post: nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol2021/09/29 06:12:42
nhanhoang91published a new post: nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol
2021/09/29 06:12:42
| author | nhanhoang91 |
| body | <p><a href="https://www.fluxprotocol.org/">Giao thức Flux</a> là một nền tảng oracle blockchain bất khả tri được xây dựng trên NEAR giúp mang dữ liệu ngoài chuỗi sang trên chuỗi. Nó còn được gọi là lớp 2 của cơ sở hạ tầng blockchain. Một cách rõ ràng hơn, nó cung cấp dữ liệu thực để các ứng dụng lập chỉ mục, truy vấn và xác minh hoặc trực tiếp đưa nó đến dApps để sử dụng. Tại thời điểm bài viết này, Flux có hơn 10.000 SDK và cung cấp dữ liệu cho hơn 10 dự án như Pulse Prediction Market và Stake GG. Hơn nữa, hơn 1.000 dự án tiền điện tử có thể tận dụng điều kỳ diệu của dự án.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/e7/ec/iPMImTJZ_o.jpg" alt="image host"/></a> <h2>Nó hoạt động như thế nào?</h2> <p>Giống như các dự án oracles khác, nhiệm vụ của Flux Protocol là đưa dữ liệu ngoài chuỗi vào blockchain thông qua trình xác thực. Cụ thể, người xác nhận cần phải thế chấp tài sản của họ để đảm bảo rằng mọi dữ liệu ngoài chuỗi mà họ đưa vào chuỗi đều đáng tin cậy. Ngược lại, họ sẽ bị tranh chấp thông qua hệ thống bỏ phiếu và mất tài sản thế chấp trong trường hợp họ cung cấp dữ liệu sai. Mặc dù có những oracles khác đã có trên NEAR như Chainlink và Band Protocol, tuy nhiên, chúng vẫn chưa được khởi chạy mainnet trên NEAR. Do đó, Flux Protocol trở thành oracles quan trọng nhất trong hệ sinh thái của NEAR.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/4f/6b/gLd1n3IE_o.jpg" alt="image host"/></a> <p> </p> <h2>Ưu điểm của Giao thức Flux</h2> <p>Giao thức Flux có nhiều ưu điểm so với các dự án oracle khác. Flux giảm đáng kể thời gian và nỗ lực cần thiết để xây dựng các ứng dụng yêu cầu dữ liệu phức tạp ngoài chuỗi và trên chuỗi nhờ SDK thân thiện với người dùng của nó, chỉ cần ba dòng mã để kết nối. Một minh họa cho điều này là tính năng tổng hợp của Oracle, có thể giúp người dùng kết nối các nhà khai thác chính trên tiền điện tử vào một nơi với sự đảm bảo kinh tế. Nó cũng có cơ chế tranh chấp đa dạng với đặt cược, bỏ phiếu và đo lường thống kê. Điều này sẽ làm tăng đáng kể chất lượng đầu ra cuối cùng, điều quan trọng nhất của một oracles.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/92/96/hq2ISBpz_o.jpg" alt="image host"/></a> <p> </p> <p>Quá trình chọn lọc nguồn dữ liệu cũng được sử dụng để quyết định xem một dự án oracle có đáng để thử hay không. Trong đó, nguồn dữ liệu là sự kết hợp của tất cả mọi thứ như nguồn con người hoặc hợp đồng thông minh hoặc nó có thể là tất cả mọi thứ. Do đó, không giống như các nguồn khác, Flux Protocol sử dụng cả ba nguồn dữ liệu có thể có, đó là con người, API và oracles để truy xuất kết quả đáng tin cậy và không bỏ lỡ bất kỳ dữ liệu quan trọng nào.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/94/b6/2GVHYEgP_o.jpg" alt="image host"/></a> <p> </p> <h2>Lộ trình</h2> <p>Giai đoạn đầu tiên của dự án tập trung vào việc phát triển và hoàn thiện Mainnet beta bao gồm việc hoàn thiện SDK Flux, Ứng dụng nguồn mở Flux và Nút chỉ mục Flux. Các nhiệm vụ khác như Triển khai giao thức Flux V0.5 trên Mainnet; Triển khai nút chỉ số Flux; Cầu DAI từ Ethereum sang NEAR, v.v.; đã được hoàn thành vào năm 2020. Trong Giai đoạn hai, dự án bắt đầu cho phép các dự án khác sử dụng sản phẩm của mình trong giao thức / dApps. Các bước cụ thể trong lộ trình như sau: Triển khai Flux Protocol V1 trên Mainnet - Triển khai Flux Oracle, Thực hiện các hợp đồng quản trị Flux, Đưa các chương trình Beta lên mạng chính, Quantstamp Security kiểm tra tất cả các hợp đồng, Triển khai Flux Token. Tất cả các bước này sẽ dần được hoàn thành trong năm nay trước khi dự án chuyển sang giai đoạn 3, đó là công việc đưa quyền kiểm soát giao thức vào tay người dùng, thực hiện phân quyền của giao thức.</p> <p> </p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/3e/1d/xQUb6vtx_o.jpg" alt="image host"/></a> <p>Để kết luận, cùng với NEAR, Flux Protocol cũng được hỗ trợ bởi Coinbase Ventures, điều này nói lên tầm quan trọng của dự án trong hệ sinh thái của NEAR. Với lộ trình rõ ràng và công nghệ đổi mới, Flux Protocol dự kiến sẽ là dự án thay đổi cuộc chơi tiếp theo trong thị trường blockchain đang bùng nổ.</p> |
| json metadata | {"tags":["blockchaindatabase","crypto","fluxprotocol","data","oracles"],"image":["https://images2.imgbox.com/e7/ec/iPMImTJZ_o.jpg","https://images2.imgbox.com/4f/6b/gLd1n3IE_o.jpg","https://images2.imgbox.com/92/96/hq2ISBpz_o.jpg","https://images2.imgbox.com/94/b6/2GVHYEgP_o.jpg","https://images2.imgbox.com/3e/1d/xQUb6vtx_o.jpg"],"links":["https://www.fluxprotocol.org/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | blockchaindatabase |
| permlink | nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol |
| title | NHỮNG ĐIỀU BẠN CẦN BIẾT VỀ DỰ ÁN ORACLE ĐẦU TIÊN TRÊN NEAR - FLUX PROTOCOL |
| Transaction Info | Block #57665656/Trx 81c311b9d31f4f5f2269be9b64cb9220ac451ea6 |
View Raw JSON Data
{
"block": 57665656,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<p><a href=\"https://www.fluxprotocol.org/\">Giao thức Flux</a> là một nền tảng oracle blockchain bất khả tri được xây dựng trên NEAR giúp mang dữ liệu ngoài chuỗi sang trên chuỗi. Nó còn được gọi là lớp 2 của cơ sở hạ tầng blockchain. Một cách rõ ràng hơn, nó cung cấp dữ liệu thực để các ứng dụng lập chỉ mục, truy vấn và xác minh hoặc trực tiếp đưa nó đến dApps để sử dụng. Tại thời điểm bài viết này, Flux có hơn 10.000 SDK và cung cấp dữ liệu cho hơn 10 dự án như Pulse Prediction Market và Stake GG. Hơn nữa, hơn 1.000 dự án tiền điện tử có thể tận dụng điều kỳ diệu của dự án.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/e7/ec/iPMImTJZ_o.jpg\" alt=\"image host\"/></a>\n<h2>Nó hoạt động như thế nào?</h2>\n<p>Giống như các dự án oracles khác, nhiệm vụ của Flux Protocol là đưa dữ liệu ngoài chuỗi vào blockchain thông qua trình xác thực. Cụ thể, người xác nhận cần phải thế chấp tài sản của họ để đảm bảo rằng mọi dữ liệu ngoài chuỗi mà họ đưa vào chuỗi đều đáng tin cậy. Ngược lại, họ sẽ bị tranh chấp thông qua hệ thống bỏ phiếu và mất tài sản thế chấp trong trường hợp họ cung cấp dữ liệu sai. Mặc dù có những oracles khác đã có trên NEAR như Chainlink và Band Protocol, tuy nhiên, chúng vẫn chưa được khởi chạy mainnet trên NEAR. Do đó, Flux Protocol trở thành oracles quan trọng nhất trong hệ sinh thái của NEAR.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/4f/6b/gLd1n3IE_o.jpg\" alt=\"image host\"/></a>\n<p> </p>\n<h2>Ưu điểm của Giao thức Flux</h2>\n<p>Giao thức Flux có nhiều ưu điểm so với các dự án oracle khác. Flux giảm đáng kể thời gian và nỗ lực cần thiết để xây dựng các ứng dụng yêu cầu dữ liệu phức tạp ngoài chuỗi và trên chuỗi nhờ SDK thân thiện với người dùng của nó, chỉ cần ba dòng mã để kết nối. Một minh họa cho điều này là tính năng tổng hợp của Oracle, có thể giúp người dùng kết nối các nhà khai thác chính trên tiền điện tử vào một nơi với sự đảm bảo kinh tế. Nó cũng có cơ chế tranh chấp đa dạng với đặt cược, bỏ phiếu và đo lường thống kê. Điều này sẽ làm tăng đáng kể chất lượng đầu ra cuối cùng, điều quan trọng nhất của một oracles.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/92/96/hq2ISBpz_o.jpg\" alt=\"image host\"/></a>\n<p> </p>\n<p>Quá trình chọn lọc nguồn dữ liệu cũng được sử dụng để quyết định xem một dự án oracle có đáng để thử hay không. Trong đó, nguồn dữ liệu là sự kết hợp của tất cả mọi thứ như nguồn con người hoặc hợp đồng thông minh hoặc nó có thể là tất cả mọi thứ. Do đó, không giống như các nguồn khác, Flux Protocol sử dụng cả ba nguồn dữ liệu có thể có, đó là con người, API và oracles để truy xuất kết quả đáng tin cậy và không bỏ lỡ bất kỳ dữ liệu quan trọng nào.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/94/b6/2GVHYEgP_o.jpg\" alt=\"image host\"/></a>\n<p> </p>\n<h2>Lộ trình</h2>\n<p>Giai đoạn đầu tiên của dự án tập trung vào việc phát triển và hoàn thiện Mainnet beta bao gồm việc hoàn thiện SDK Flux, Ứng dụng nguồn mở Flux và Nút chỉ mục Flux. Các nhiệm vụ khác như Triển khai giao thức Flux V0.5 trên Mainnet; Triển khai nút chỉ số Flux; Cầu DAI từ Ethereum sang NEAR, v.v.; đã được hoàn thành vào năm 2020. Trong Giai đoạn hai, dự án bắt đầu cho phép các dự án khác sử dụng sản phẩm của mình trong giao thức / dApps. Các bước cụ thể trong lộ trình như sau: Triển khai Flux Protocol V1 trên Mainnet - Triển khai Flux Oracle, Thực hiện các hợp đồng quản trị Flux, Đưa các chương trình Beta lên mạng chính, Quantstamp Security kiểm tra tất cả các hợp đồng, Triển khai Flux Token. Tất cả các bước này sẽ dần được hoàn thành trong năm nay trước khi dự án chuyển sang giai đoạn 3, đó là công việc đưa quyền kiểm soát giao thức vào tay người dùng, thực hiện phân quyền của giao thức.</p>\n<p> </p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/3e/1d/xQUb6vtx_o.jpg\" alt=\"image host\"/></a>\n<p>Để kết luận, cùng với NEAR, Flux Protocol cũng được hỗ trợ bởi Coinbase Ventures, điều này nói lên tầm quan trọng của dự án trong hệ sinh thái của NEAR. Với lộ trình rõ ràng và công nghệ đổi mới, Flux Protocol dự kiến sẽ là dự án thay đổi cuộc chơi tiếp theo trong thị trường blockchain đang bùng nổ.</p>",
"json_metadata": "{\"tags\":[\"blockchaindatabase\",\"crypto\",\"fluxprotocol\",\"data\",\"oracles\"],\"image\":[\"https://images2.imgbox.com/e7/ec/iPMImTJZ_o.jpg\",\"https://images2.imgbox.com/4f/6b/gLd1n3IE_o.jpg\",\"https://images2.imgbox.com/92/96/hq2ISBpz_o.jpg\",\"https://images2.imgbox.com/94/b6/2GVHYEgP_o.jpg\",\"https://images2.imgbox.com/3e/1d/xQUb6vtx_o.jpg\"],\"links\":[\"https://www.fluxprotocol.org/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchaindatabase",
"permlink": "nhung-dieu-ban-can-biet-ve-du-an-oracle-dau-tien-tren-near-flux-protocol",
"title": "NHỮNG ĐIỀU BẠN CẦN BIẾT VỀ DỰ ÁN ORACLE ĐẦU TIÊN TRÊN NEAR - FLUX PROTOCOL"
}
],
"op_in_trx": 0,
"timestamp": "2021-09-29T06:12:42",
"trx_id": "81c311b9d31f4f5f2269be9b64cb9220ac451ea6",
"trx_in_block": 3,
"virtual_op": 0
}squbeupvoted (1.00%) @nhanhoang91 / nguoi-yeu-cau-du-lieu2021/09/28 06:04:45
squbeupvoted (1.00%) @nhanhoang91 / nguoi-yeu-cau-du-lieu
2021/09/28 06:04:45
| author | nhanhoang91 |
| permlink | nguoi-yeu-cau-du-lieu |
| voter | sqube |
| weight | 100 (1.00%) |
| Transaction Info | Block #57636859/Trx c99c1f0f947cd65dd0f70d3c671ceefa6e8e2533 |
View Raw JSON Data
{
"block": 57636859,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "nguoi-yeu-cau-du-lieu",
"voter": "sqube",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2021-09-28T06:04:45",
"trx_id": "c99c1f0f947cd65dd0f70d3c671ceefa6e8e2533",
"trx_in_block": 15,
"virtual_op": 0
}nhanhoang91published a new post: nguoi-yeu-cau-du-lieu2021/09/28 06:04:36
nhanhoang91published a new post: nguoi-yeu-cau-du-lieu
2021/09/28 06:04:36
| author | nhanhoang91 |
| body | <h1>Người yêu cầu dữ liệu</h1> <p> </p> <p>Cách thiết lập hợp đồng thông minh của bạn với tư cách là Người yêu cầu dữ liệu với việc triển khai testnet của Flux trên NEAR</p> <h2>Điều kiện tiên quyết</h2> <p>Bạn muốn tạo một điểm truy cập vào Flux Oracle để tạo các yêu cầu dữ liệu cần được giải quyết bởi trình xác thực Flux</p> <p>Bạn cảm thấy thoải mái với dòng lệnh, GitHub, ví tiền điện tử và chỉnh sửa / triển khai hợp đồng thông minh</p> <p>Bạn xác nhận đây là <strong>phiên bản testnet</strong> và việc đưa vào <strong>Sổ đăng ký</strong> người yêu cầu trên mainnet yêu cầu một đề xuất và thực thi thành công với Flux DAO và mỗi yêu cầu dữ liệu sẽ yêu cầu đăng một trái phiếu hợp lệ (không cần tiền thực cho testnet). Thông tin thêm về cách gửi đề xuất tới Flux DAO sẽ được đưa vào một ngày sau đó.</p> <h2>Thiết lập hợp đồng</h2> <p>Nếu bạn chưa triển khai hợp đồng trên NEAR, hãy làm theo hướng dẫn tại đây để thiết lập tài khoản testnet, môi trường Rust và NEAR CLI.</p> <p>Khi bạn đã sắp xếp xong, bạn có thể sao chép hợp đồng mẫu của người yêu cầu tại đây.</p> <p>Đầu tiên, đăng nhập vào tài khoản NEAR testnet của bạn bằng lệnh đăng nhập cli <em>near login</em> của NEAR và điền thông tin để thêm thông tin đăng nhập tài khoản cục bộ của bạn và chạy phần còn lại của các lệnh.</p> <p>Mở thiết bị đầu cuối và <em>cd</em> của bạn vào thư mục và chạy lệnh sau, thay thế <em>YOUR_TESTNET_ACCT_ID</em> bằng id tài khoản testnet thực của bạn.</p> <p><em>1 sh build.sh </em><br /><em>2 sh scripts/deploy_requester.sh --accountId YOUR_TESTNET_ACCT_ID.testnet</em></p> <p> </p> <p>Trong bản phát hành mainnet, trước tiên bạn sẽ cần yêu cầu đưa hợp đồng của mình vào danh sách trắng với Flux DAO trước khi bạn có thể tương tác với oracle. Nhưng bạn đang gặp may! Chúng tôi sẽ cho bạn cơ hội để kiểm tra nó, một cách không quan liêu!</p> <h2>Yêu cầu</h2> <p>Bây giờ bạn đã triển khai hợp đồng trên tài khoản testnet của mình, đã đến lúc kích hoạt một yêu cầu! Yêu cầu dữ liệu được tạo bằng cách gọi một phương thức trên hợp đồng Người yêu cầu (thường được đặt tên là <em>create_data_request ())</em> để chuyển tiếp trái phiếu thanh toán tới oracle bằng cách gọi hợp đồng mã thông báo với tải trọng yêu cầu mới.</p> <a href="https://imgbox.com/95XrIfyB" target="_blank"><img src="https://images2.imgbox.com/db/9e/95XrIfyB_o.png" alt="image host"/></a> <p> </p> <p>Như bạn có thể thấy, mỗi yêu cầu dữ liệu có một số lượng và một trọng tải trong đó. Số tiền là <em>validity_bond</em> mà bạn phải đăng cùng với yêu cầu để tương tác với oracle. Điều này nhằm mục đích ngăn chặn các kẻ xấu gửi các oracle rác với các yêu cầu không hợp lệ, trừ khi họ thực sự muốn mất tất cả tiền của mình cho người xác thực. Nếu yêu cầu của bạn bị người xác nhận cho là không hợp lệ, trái phiếu của bạn sẽ được giữ bởi kho bạc.</p> <p>Mọi yêu cầu phải đi kèm với một trọng tải chứa một số hoặc tất cả các đối số sau:</p> <p> </p> <div class="codeLine-a3169fbc" data-key="22ec1816d7424561becb9d6f29c2ffc4"><em>1 pub struct NewDataRequestArgs {</em></div> <div class="codeLine-a3169fbc" data-key="b6fb7abba6cd433dad817fc517cf8d64"><em>2 pub sources: Vec<Source>, // for api DR types, can be left as "[]" if arbitrator DR type</em></div> <div class="codeLine-a3169fbc" data-key="19a04119531e4f30bd0420eca8461351"><em>3 pub tags: Option<Vec<String>>, // for searching DR types</em></div> <div class="codeLine-a3169fbc" data-key="1e2fa0ae5e31437e8935f83ab3c81174"><em>4 pub description: Option<String>, // question if arbitrator type, details</em></div> <div class="codeLine-a3169fbc" data-key="3c9a3962a81f401890b7ed52a553387b"><em>5 pub outcomes: Option<Vec<String>>, // for predefining outcomes of DR</em></div> <div class="codeLine-a3169fbc" data-key="3c193f62ed334442b94ccf8d71e74b1c"><em>6 pub challenge_period: WrappedTimestamp, // milliseconds, duration validators can challenge top outcome</em></div> <div class="codeLine-a3169fbc" data-key="f3b721ece7ef496fa7729f93c385369e"><em>7 pub data_type: DataRequestDataType, // type of data DR outcome is</em></div> <div class="codeLine-a3169fbc" data-key="df8ad690c5bf413da7ba4d133c76a4bc"><em>8 pub creator: AccountId, // creator of DR </em></div> <div class="codeLine-a3169fbc" data-key="6e0ac38d7bcf44739768896ed70b540e" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJwdWIlMjBzdHJ1Y3QlMjBOZXdEYXRhUmVxdWVzdEFyZ3MlMjAlN0IlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHViJTIwc291cmNlcyUzQSUyMFZlYyUzQ1NvdXJjZSUzRSUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyRiUyRiUyMGZvciUyMGFwaSUyMERSJTIwdHlwZXMlMkMlMjBjYW4lMjBiZSUyMGxlZnQlMjBhcyUyMCU1QyUyMiU1QiU1RCU1QyUyMiUyMGlmJTIwYXJiaXRyYXRvciUyMERSJTIwdHlwZSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjB0YWdzJTNBJTIwT3B0aW9uJTNDVmVjJTNDU3RyaW5nJTNFJTNFJTJDJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTJGJTJGJTIwZm9yJTIwc2VhcmNoaW5nJTIwRFIlMjB0eXBlcyUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjBkZXNjcmlwdGlvbiUzQSUyME9wdGlvbiUzQ1N0cmluZyUzRSUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyRiUyRiUyMHF1ZXN0aW9uJTIwaWYlMjBhcmJpdHJhdG9yJTIwdHlwZSUyQyUyMGRldGFpbHMlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHViJTIwb3V0Y29tZXMlM0ElMjBPcHRpb24lM0NWZWMlM0NTdHJpbmclM0UlM0UlMkMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBmb3IlMjBwcmVkZWZpbmluZyUyMG91dGNvbWVzJTIwb2YlMjBEUiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjBjaGFsbGVuZ2VfcGVyaW9kJTNBJTIwV3JhcHBlZFRpbWVzdGFtcCUyQyUyMCUyMCUyMCUyMCUyRiUyRiUyMG1pbGxpc2Vjb25kcyUyQyUyMGR1cmF0aW9uJTIwdmFsaWRhdG9ycyUyMGNhbiUyMGNoYWxsZW5nZSUyMHRvcCUyMG91dGNvbWUlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHViJTIwZGF0YV90eXBlJTNBJTIwRGF0YVJlcXVlc3REYXRhVHlwZSUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyRiUyRiUyMHR5cGUlMjBvZiUyMGRhdGElMjBEUiUyMG91dGNvbWUlMjBpcyUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjBjcmVhdG9yJTNBJTIwQWNjb3VudElkJTJDJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTJGJTJGJTIwY3JlYXRvciUyMG9mJTIwRFIlMjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTdEJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0Q="><em>9 }</em></div> <p> </p> <p><em>Source</em> là:</p> <p> </p> <div class="codeLine-a3169fbc" data-key="888b5089103e4bf7a8343e251ee47bc7"><em>1 pub struct Source {</em></div> <div class="codeLine-a3169fbc" data-key="a6c4955e424c4d0a885d3fb6ec5e6be4"><em>2 pub end_point: String, // api endpoint, where validator can retrieve outcome</em></div> <div class="codeLine-a3169fbc" data-key="b9c07de801bd4abba0fdd93e0f732224"><em>3 pub source_path: String // json path to outcome </em></div> <div class="codeLine-a3169fbc" data-key="97ad77afa15e4ba49240ba02b0aebf3f" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJwdWIlMjBzdHJ1Y3QlMjBTb3VyY2UlMjAlN0IlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHViJTIwZW5kX3BvaW50JTNBJTIwU3RyaW5nJTJDJTIwJTIwJTIwJTIwJTJGJTJGJTIwYXBpJTIwZW5kcG9pbnQlMkMlMjB3aGVyZSUyMHZhbGlkYXRvciUyMGNhbiUyMHJldHJpZXZlJTIwb3V0Y29tZSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjBzb3VyY2VfcGF0aCUzQSUyMFN0cmluZyUyMCUyMCUyMCUyRiUyRiUyMGpzb24lMjBwYXRoJTIwdG8lMjBvdXRjb21lJTIwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiU3RCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdE"><em>4 }</em></div> <p> </p> <p>Đối với Yêu cầu dữ liệu API hoặc yêu cầu có kết quả có thể được truy xuất từ một số điểm cuối API nhất định, hãy điền vào điểm cuối bằng [các] điểm cuối API và đường dẫn source_path với đường dẫn (ví dụ: đường dẫn JSON) để nhận được value mong muốn. Ví dụ:</p> <p> </p> <div class="codeLine-a3169fbc" data-key="916879cdb9ef44e0aba53440f64edbb8"><em>1 \"sources\": [</em></div> <div class="codeLine-a3169fbc" data-key="5526506f69f14da5abb3f7f1ef0740ba"><em>2 { </em></div> <div class="codeLine-a3169fbc" data-key="9ee7f953ad2c426994396e16c74bc21d"><em>3 \"end_point\": \"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=1629805695&to=1629806000\", </em></div> <div class="codeLine-a3169fbc" data-key="062f3e8ef596480eb1721ba27cc0b301"><em>4 \"source_path\": \"prices[\$\$last][1]\" </em></div> <div class="codeLine-a3169fbc" data-key="65b79fac23c54ee29523e40d2c0dc3e4"><em>5 }</em></div> <div class="codeLine-a3169fbc" data-key="2a50b88233e649aaa05e125cec6536f7" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlNUMlNUMlNUMlMjJzb3VyY2VzJTVDJTVDJTVDJTIyJTNBJTIwJTVCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCU3QiUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJlbmRfcG9pbnQlNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjJodHRwcyUzQSUyRiUyRmFwaS5jb2luZ2Vja28uY29tJTJGYXBpJTJGdjMlMkZjb2lucyUyRmJpdGNvaW4lMkZtYXJrZXRfY2hhcnQlMkZyYW5nZSUzRnZzX2N1cnJlbmN5JTNEdXNkJTI2ZnJvbSUzRDE2Mjk4MDU2OTUlMjZ0byUzRDE2Mjk4MDYwMDAlNUMlNUMlNUMlMjIlMkMlMjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIyc291cmNlX3BhdGglNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjJwcmljZXMlNUIlNUMlNUMlMjQlNUMlNUMlMjRsYXN0JTVEJTVCMSU1RCU1QyU1QyU1QyUyMiUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlN0QlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTVEJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0Q="><em>6 ]</em></div> <p> </p> <p>Đối với các yêu cầu của trọng tài hoặc các yêu cầu thường yêu cầu con người trả lời, Bạn có thể để lại các nguồn mà không có bất kỳ giá trị nào. Ví dụ:</p> <a href="https://imgbox.com/OHNmYu1k" target="_blank"><img src="https://images2.imgbox.com/c7/68/OHNmYu1k_o.png" alt="image host"/></a> <p> </p> <p>LƯU ý: yêu cầu của bạn phải có kết quả được phân định rõ ràng và không thể thay đổi theo thời gian hoặc địa điểm. Ví dụ: việc yêu cầu giá bitcoin hiện tại có thể thay đổi dựa trên thời gian trình xác thực cung cấp hoặc trao đổi / nguồn mà họ đã sử dụng. Cung cấp điểm kết thúc rõ ràng để lấy dữ liệu từ đó một epoch hoặc khoảng thời gian mà dữ liệu cần được thu thập để yêu cầu của bạn được đánh dấu là hợp lệ và không bị thực hiện trái phiếu của bạn.</p> <p> </p> <p><em>DataRequestDataType</em> là:</p> <p> </p> <a href="https://imgbox.com/BKOaq6Zj" target="_blank"><img src="https://images2.imgbox.com/40/2e/BKOaq6Zj_o.png" alt="image host"/></a> <p> </p> <p>Nếu bạn mong đợi kết quả của mình là một con số, hãy điền vào trường <em>data_type</em> dưới dạng Số với giá trị là cấp số nhân cho số đó. Ví dụ:</p> <p> </p> <a href="https://imgbox.com/h0TMy9NY" target="_blank"><img src="https://images2.imgbox.com/03/0a/h0TMy9NY_o.png" alt="image host"/></a> <p> </p> <p>Nếu bạn đang mong đợi kết quả là một chuỗi, bạn có thể điền vào trường <em>data_type</em> với giá trị <em>String</em> như sau:</p> <p> </p> <a href="https://imgbox.com/6UuD5NZo" target="_blank"><img src="https://images2.imgbox.com/bf/71/6UuD5NZo_o.png" alt="image host"/></a> <p> </p> <p>Sử dụng các thẻ để phân loại yêu cầu dữ liệu để truy vấn dễ dàng hơn sau này khi cần kết quả. Các thẻ rất linh hoạt và có thể được sử dụng để nhóm nhiều loại yêu cầu dữ liệu lại với nhau. Trong ví dụ của chúng tôi, chúng tôi sử dụng một số tự động tăng dần để dễ dàng liên kết từng yêu cầu dữ liệu với kết quả của nó.</p> <p>Mô tả có thể được điền vào dữ liệu được yêu cầu, ví dụ: “Giá đóng cửa của Bitcoin vào ngày 1 tháng 12 năm 2020 là bao nhiêu?”</p> <p>Như một tùy chọn, bạn có thể thêm danh sách các kết quả có thể mong đợi làm giá trị cho trường kết quả. Nó cũng có thể được để trống trong trường hợp có câu trả lời tùy ý, chẳng hạn như từ nguồn cấp dữ liệu giá.</p> <p><em>Challenge_period</em> là khoảng thời gian để người xác thực đặt cược vào kết quả sau khi đạt đến thời gian giải quyết. Khoảng thời gian này có kỳ hạn tối thiểu là 300.000ms (5 phút) và kỳ hạn tối đa là 86.400.000ms (24 giờ).</p> <p>Người tạo yêu cầu dữ liệu, thường được đặt tự động bởi Giao diện yêu cầu.</p> <h3>Yêu cầu API</h3> <p>Nhiều yêu cầu sẽ được thực hiện sẽ yêu cầu câu trả lời từ một vị trí API cụ thể. Trong trường hợp này, bạn phải điền vào <em>end_point</em> và <em>source_path</em> trong phần <em>sources</em> để có thể tìm thấy một kết quả duy nhất. Nếu bạn là một giao thức cần thực hiện các yêu cầu tự động, bạn có thể làm như vậy khá dễ dàng bằng cách thiết lập các yêu cầu API.</p> <p>Sau khi được điền, các đối số yêu cầu dữ liệu có thể trông giống như sau:</p> <p> </p> <div class="codeLine-a3169fbc" data-key="88e9bd53725b4fd18e2cd6fd57828521"><em>1 "{</em></div> <div class="codeLine-a3169fbc" data-key="2e573d868f8c48518bfec0a5b0dcff8e"><em>2 \"amount\": \"1000000000000000000000000\", </em></div> <div class="codeLine-a3169fbc" data-key="f8d5830786cc440382c3239537297cba"><em>3 \"payload\": {</em></div> <div class="codeLine-a3169fbc" data-key="0dd4b0b2583e4050913fc40ac7701544"><em>4 \"sources\": [</em></div> <div class="codeLine-a3169fbc" data-key="82c8a6e1fc01429dbe7bdcedf501e58a"><em>5 {</em></div> <div class="codeLine-a3169fbc" data-key="e54313b8d35a4d06ba5876269897d4f8"><em>6 \"end_point\": \"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=1629805695&to=1629806000\", </em></div> <div class="codeLine-a3169fbc" data-key="475484b19b824635b753bedae22e2d8f"><em>7 \"source_path\": \"prices[\$\$last][1]\" </em></div> <div class="codeLine-a3169fbc" data-key="470ff018afbb44a2b3d57e100c0899fe"><em>8 }</em></div> <div class="codeLine-a3169fbc" data-key="f34db5bcd4d04f92af187f7d4a3e5eeb"><em>9 ],</em></div> <div class="codeLine-a3169fbc" data-key="412319d5a40941cf84612f2e61497b31"><em>10 \"tags\":[\"pricing\",\"btc\"],</em></div> <div class="codeLine-a3169fbc" data-key="d36137c77b7d4d88a235b02d2b6ec11e"><em>11 \"challenge_period\":\"120000000000\",</em></div> <div class="codeLine-a3169fbc" data-key="52d8575468c04200b0f15a8ff7324bdd"><em>12 \"settlement_time\":\"1\",</em></div> <div class="codeLine-a3169fbc" data-key="ad89f35b8b9c4bf1980f0f26a1649b40"><em>13 \"data_type\":{</em></div> <div class="codeLine-a3169fbc" data-key="f0673b0e14c149da952f0c65deaba621"><em>14 \"Number\":\"10000000000\"</em></div> <div class="codeLine-a3169fbc" data-key="b31b2219b7fc406abf2466a92717e1b1"><em>15 },</em></div> <div class="codeLine-a3169fbc" data-key="8e5818f6a25f4497a479388a8fbd0f14"><em>16 \"creator\":\"YOUR_TESTNET_ACCOUNT_ID\"</em></div> <div class="codeLine-a3169fbc" data-key="3880ba22d974424e9366c9fa2a92557e"><em>17 }</em></div> <div class="codeLine-a3169fbc" data-key="46ec56e1f8104b9ea817220ffad39931" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlNUMlMjIlN0IlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIyYW1vdW50JTVDJTVDJTVDJTIyJTNBJTIwJTVDJTVDJTVDJTIyMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCU1QyU1QyU1QyUyMiUyQyUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJwYXlsb2FkJTVDJTVDJTVDJTIyJTNBJTIwJTdCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyU1QyU1QyUyMnNvdXJjZXMlNUMlNUMlNUMlMjIlM0ElMjAlNUIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyU1QyU1QyUyMmVuZF9wb2ludCU1QyU1QyU1QyUyMiUzQSUyMCU1QyU1QyU1QyUyMmh0dHBzJTNBJTJGJTJGYXBpLmNvaW5nZWNrby5jb20lMkZhcGklMkZ2MyUyRmNvaW5zJTJGYml0Y29pbiUyRm1hcmtldF9jaGFydCUyRnJhbmdlJTNGdnNfY3VycmVuY3klM0R1c2QlMjZmcm9tJTNEMTYyOTgwNTY5NSUyNnRvJTNEMTYyOTgwNjAwMCU1QyU1QyU1QyUyMiUyQyUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJzb3VyY2VfcGF0aCU1QyU1QyU1QyUyMiUzQSUyMCU1QyU1QyU1QyUyMnByaWNlcyU1QiU1QyU1QyUyNCU1QyU1QyUyNGxhc3QlNUQlNUIxJTVEJTVDJTVDJTVDJTIyJTIwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUQlMkMlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIydGFncyU1QyU1QyU1QyUyMiUzQSU1QiU1QyU1QyU1QyUyMnByaWNpbmclNUMlNUMlNUMlMjIlMkMlNUMlNUMlNUMlMjJidGMlNUMlNUMlNUMlMjIlNUQlMkMlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIyY2hhbGxlbmdlX3BlcmlvZCU1QyU1QyU1QyUyMiUzQSU1QyU1QyU1QyUyMjEyMDAwMDAwMDAwMCU1QyU1QyU1QyUyMiUyQyUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJzZXR0bGVtZW50X3RpbWUlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxJTVDJTVDJTVDJTIyJTJDJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyU1QyU1QyUyMmRhdGFfdHlwZSU1QyU1QyU1QyUyMiUzQSU3QiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJOdW1iZXIlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxMDAwMDAwMDAwMCU1QyU1QyU1QyUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIyY3JlYXRvciU1QyU1QyU1QyUyMiUzQSU1QyU1QyU1QyUyMllPVVJfVEVTVE5FVF9BQ0NPVU5UX0lEJTVDJTVDJTVDJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCU3RCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlN0QlNUMlMjIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RA=="><em>18 }"</em></div> <p> </p> <p>Khi đã sẵn sàng, bạn có thể thực hiện yêu cầu dữ liệu của mình bằng các lệnh sau hoặc chạy <em>sh scripts / request.sh YOUR_TESTNET_ACCOUNT_ID:</em></p> <p> </p> <div class="codeLine-a3169fbc" data-key="043bcec2b75e4276b4620409c5d91c27"><em>1 env NEAR_ENV=testnet</em></div> <div class="codeLine-a3169fbc" data-key="d26c485f71104bbfb8ef91907a321d9d"><em>2</em></div> <div class="codeLine-a3169fbc" data-key="384cb69281f64eb1bf803186535500e9"><em>3 TIME=`date +%s`</em></div> <div class="codeLine-a3169fbc" data-key="36e4525ba77e46199cfa2a5455413857"><em>4 END_TIME=`expr $TIME`</em></div> <div class="codeLine-a3169fbc" data-key="5f8c98e5aa2d4125a0bee4fa5114709d"><em>5 BEGIN_TIME=`expr $END_TIME - 300`</em></div> <div class="codeLine-a3169fbc" data-key="5424c14364834f47a2de14cd3be21e3b"><em>6 SOURCES="[{ \"source_path\": \"0.close\", \"end_point\": \"https://api.coinpaprika.com/v1/coins/btc-bitcoin/ohlcv/historical?start=$BEGIN_TIME&end=$TIME\" }, { \"end_point\": \"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=$BEGIN_TIME&to=$TIME\", \"source_path\": \"prices[\$\$last][1]\" }]"</em></div> <div class="codeLine-a3169fbc" data-key="24ff917c82d448a6bea394983a788d49"><em>7 JSON="{\"sources\": $SOURCES,\"tags\":[\"1\"],\"description\":\"What is the price of BTC?\",\"challenge_period\":\"120000000000\",\"settlement_time\":\"1\",\"data_type\":{\"Number\":\"10000000000\"},\"creator\":\"your_account_id.flux-dev\"}"</em></div> <div class="codeLine-a3169fbc" data-key="ffe0467ae0d6432eb8c9787476537dbb" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJlbnYlMjBORUFSX0VOViUzRHRlc3RuZXQlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMlRJTUUlM0QlNjBkYXRlJTIwJTJCJTI1cyU2MCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJFTkRfVElNRSUzRCU2MGV4cHIlMjAlMjRUSU1FJTYwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMkJFR0lOX1RJTUUlM0QlNjBleHByJTIwJTI0RU5EX1RJTUUlMjAtJTIwMzAwJTYwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMlNPVVJDRVMlM0QlNUMlMjIlNUIlN0IlMjAlNUMlNUMlNUMlMjJzb3VyY2VfcGF0aCU1QyU1QyU1QyUyMiUzQSUyMCU1QyU1QyU1QyUyMjAuY2xvc2UlNUMlNUMlNUMlMjIlMkMlMjAlNUMlNUMlNUMlMjJlbmRfcG9pbnQlNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjJodHRwcyUzQSUyRiUyRmFwaS5jb2lucGFwcmlrYS5jb20lMkZ2MSUyRmNvaW5zJTJGYnRjLWJpdGNvaW4lMkZvaGxjdiUyRmhpc3RvcmljYWwlM0ZzdGFydCUzRCUyNEJFR0lOX1RJTUUlMjZlbmQlM0QlMjRUSU1FJTVDJTVDJTVDJTIyJTIwJTdEJTJDJTIwJTdCJTIwJTVDJTVDJTVDJTIyZW5kX3BvaW50JTVDJTVDJTVDJTIyJTNBJTIwJTVDJTVDJTVDJTIyaHR0cHMlM0ElMkYlMkZhcGkuY29pbmdlY2tvLmNvbSUyRmFwaSUyRnYzJTJGY29pbnMlMkZiaXRjb2luJTJGbWFya2V0X2NoYXJ0JTJGcmFuZ2UlM0Z2c19jdXJyZW5jeSUzRHVzZCUyNmZyb20lM0QlMjRCRUdJTl9USU1FJTI2dG8lM0QlMjRUSU1FJTVDJTVDJTVDJTIyJTJDJTIwJTVDJTVDJTVDJTIyc291cmNlX3BhdGglNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjJwcmljZXMlNUIlNUMlNUMlMjQlNUMlNUMlMjRsYXN0JTVEJTVCMSU1RCU1QyU1QyU1QyUyMiUyMCU3RCU1RCU1QyUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJKU09OJTNEJTVDJTIyJTdCJTVDJTVDJTVDJTIyc291cmNlcyU1QyU1QyU1QyUyMiUzQSUyMCUyNFNPVVJDRVMlMkMlNUMlNUMlNUMlMjJ0YWdzJTVDJTVDJTVDJTIyJTNBJTVCJTVDJTVDJTVDJTIyMSU1QyU1QyU1QyUyMiU1RCUyQyU1QyU1QyU1QyUyMmRlc2NyaXB0aW9uJTVDJTVDJTVDJTIyJTNBJTVDJTVDJTVDJTIyV2hhdCUyMGlzJTIwdGhlJTIwcHJpY2UlMjBvZiUyMEJUQyUzRiU1QyU1QyU1QyUyMiUyQyU1QyU1QyU1QyUyMmNoYWxsZW5nZV9wZXJpb2QlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxMjAwMDAwMDAwMDAlNUMlNUMlNUMlMjIlMkMlNUMlNUMlNUMlMjJzZXR0bGVtZW50X3RpbWUlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxJTVDJTVDJTVDJTIyJTJDJTVDJTVDJTVDJTIyZGF0YV90eXBlJTVDJTVDJTVDJTIyJTNBJTdCJTVDJTVDJTVDJTIyTnVtYmVyJTVDJTVDJTVDJTIyJTNBJTVDJTVDJTVDJTIyMTAwMDAwMDAwMDAlNUMlNUMlNUMlMjIlN0QlMkMlNUMlNUMlNUMlMjJjcmVhdG9yJTVDJTVDJTVDJTIyJTNBJTVDJTVDJTVDJTIyeW91cl9hY2NvdW50X2lkLmZsdXgtZGV2JTVDJTVDJTVDJTIyJTdEJTVDJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMmVudiUyME5FQVJfRU5WJTNEdGVzdG5ldCUyMG5lYXIlMjBjYWxsJTIwJTI0MSUyMGNyZWF0ZV9kYXRhX3JlcXVlc3QlMjAlNUMlMjIlN0IlNUMlNUMlNUMlMjJhbW91bnQlNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjIxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJTVDJTVDJTVDJTIyJTJDJTIwJTVDJTVDJTVDJTIycGF5bG9hZCU1QyU1QyU1QyUyMiUzQSUyMCUyNEpTT04lN0QlNUMlMjIlMjAtLWFjY291bnRJZCUyMCUyNDElMjAtLWFtb3VudCUyMDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJTIwLS1nYXMlM0QzMDAwMDAwMDAwMDAwMDAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RA=="><em>8 env NEAR_ENV=testnet near call $1 create_data_request "{\"amount\": \"1000000000000000000000000\", \"payload\": $JSON}" --accountId $1 --amount 0.000000000000000000000001 --gas=300000000000000</em></div> <p> </p> <p>Vậy là bạn đã thực hiện yêu cầu dữ liệu đầu tiên của mình!</p> <h3>Yêu cầu của trọng tài (con người)</h3> <p>Điều gì xảy ra nếu yêu cầu của bạn không có một API cụ thể mà bạn muốn có câu trả lời? Không vấn đề gì!</p> <p>Chỉ cần đưa câu hỏi vào phần <em>description</em>, thay đổi <em>data_type</em> và để trống các nguồn.</p> <div class="codeLine-a3169fbc" data-key="0dbcb8dae6c94575b0386f4eda25ef2e"><em>1 JSON="{\"sources\": [],\"tags\":[\"sports\",\"nfl\"],\"description\":\"Which team won the NFL Super Bowl in 1996?\",\"challenge_period\":\"120000000000\",\"settlement_time\":\"1\",\"data_type\":\"String\",\"creator\":\"your_account_id.flux-dev\"}"</em></div> <div class="codeLine-a3169fbc" data-key="484c50b044d64b2b9969795156ee178c" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJKU09OJTNEJTVDJTIyJTdCJTVDJTVDJTVDJTIyc291cmNlcyU1QyU1QyU1QyUyMiUzQSUyMCU1QiU1RCUyQyU1QyU1QyU1QyUyMnRhZ3MlNUMlNUMlNUMlMjIlM0ElNUIlNUMlNUMlNUMlMjJzcG9ydHMlNUMlNUMlNUMlMjIlMkMlNUMlNUMlNUMlMjJuZmwlNUMlNUMlNUMlMjIlNUQlMkMlNUMlNUMlNUMlMjJkZXNjcmlwdGlvbiU1QyU1QyU1QyUyMiUzQSU1QyU1QyU1QyUyMldoaWNoJTIwdGVhbSUyMHdvbiUyMHRoZSUyME5GTCUyMFN1cGVyJTIwQm93bCUyMGluJTIwMTk5NiUzRiU1QyU1QyU1QyUyMiUyQyU1QyU1QyU1QyUyMmNoYWxsZW5nZV9wZXJpb2QlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxMjAwMDAwMDAwMDAlNUMlNUMlNUMlMjIlMkMlNUMlNUMlNUMlMjJzZXR0bGVtZW50X3RpbWUlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxJTVDJTVDJTVDJTIyJTJDJTVDJTVDJTVDJTIyZGF0YV90eXBlJTVDJTVDJTVDJTIyJTNBJTVDJTVDJTVDJTIyU3RyaW5nJTVDJTVDJTVDJTIyJTJDJTVDJTVDJTVDJTIyY3JlYXRvciU1QyU1QyU1QyUyMiUzQSU1QyU1QyU1QyUyMnlvdXJfYWNjb3VudF9pZC5mbHV4LWRldiU1QyU1QyU1QyUyMiU3RCU1QyUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJlbnYlMjBORUFSX0VOViUzRHRlc3RuZXQlMjBuZWFyJTIwY2FsbCUyMCUyNDElMjBjcmVhdGVfZGF0YV9yZXF1ZXN0JTIwJTVDJTIyJTdCJTVDJTVDJTVDJTIyYW1vdW50JTVDJTVDJTVDJTIyJTNBJTIwJTVDJTVDJTVDJTIyMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCU1QyU1QyU1QyUyMiUyQyUyMCU1QyU1QyU1QyUyMnBheWxvYWQlNUMlNUMlNUMlMjIlM0ElMjAlMjRKU09OJTdEJTVDJTIyJTIwLS1hY2NvdW50SWQlMjAlMjQxJTIwLS1hbW91bnQlMjAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSUyMC0tZ2FzJTNEMzAwMDAwMDAwMDAwMDAwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0Q="><em>2 env NEAR_ENV=testnet near call $1 create_data_request "{\"amount\": \"1000000000000000000000000\", \"payload\": $JSON}" --accountId $1 --amount 0.000000000000000000000001 --gas=300000000000000</em></div> <h3>Nhận kết quả của các yêu cầu</h3> <p>Khi bạn đã gửi yêu cầu thành công, bạn có thể kiểm tra tiến trình trong Oracle Explorer, xem ai đang đặt cược và kết quả tiềm năng là gì. Sau khi một kết quả, hoặc câu trả lời cho yêu cầu của bạn, được cung cấp đủ ràng buộc và không có tranh chấp chống lại nó, bạn sẽ nhận được kết quả của mình thông qua hàm <em>set_outcome</em> được gọi bởi oracle. Trong hợp đồng mẫu của chúng tôi, kết quả được lưu trữ trong bản đồ tra cứu <em>data_responses</em> với cùng một khóa (giá trị tự động tăng dần) như yêu cầu dữ liệu tương ứng của nó.</p> <p>Để kiểm tra yêu cầu và phản hồi của bạn (kết quả yêu cầu), hãy chạy các lệnh sau, thay thế <em>YOUR_TESTNET_ACCOUNT_ID</em> bằng id tài khoản testnet của bạn và <em>YOUR_REQUEST_NONCE</em> bằng dòng chữ nonce trong thẻ DR:</p> <p> </p> <a href="https://imgbox.com/iBPrOigI" target="_blank"><img src="https://images2.imgbox.com/76/8d/iBPrOigI_o.png" alt="image host"/></a> <p> </p> <p>Hàm <em>get_data_request</em> sẽ trả về <em>Option <DataRequest></em> và hàm <em>get_data_response</em> sẽ trả về <em>Option <DataResponse></em>.</p> <p>Để tìm hiểu thêm về cách Yêu cầu dữ liệu chảy qua Oracle, hãy xem phần <a href="https://docs.fluxprotocol.org/docs/data-requests/data-requests">Yêu cầu dữ liệu tại đây</a>.</p> <p><strong>Nguồn:</strong> https://docs.fluxprotocol.org/docs/getting-started/data-requesters</p> |
| json metadata | {"tags":["fluxprotocol","vietnamese","oracle","blockchain","crypto"],"image":["https://images2.imgbox.com/db/9e/95XrIfyB_o.png","https://images2.imgbox.com/c7/68/OHNmYu1k_o.png","https://images2.imgbox.com/40/2e/BKOaq6Zj_o.png","https://images2.imgbox.com/03/0a/h0TMy9NY_o.png","https://images2.imgbox.com/bf/71/6UuD5NZo_o.png","https://images2.imgbox.com/76/8d/iBPrOigI_o.png"],"links":["https://imgbox.com/95XrIfyB","https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=1629805695&to=1629806000\\","https://imgbox.com/OHNmYu1k","https://imgbox.com/BKOaq6Zj","https://imgbox.com/h0TMy9NY","https://imgbox.com/6UuD5NZo","https://api.coinpaprika.com/v1/coins/btc-bitcoin/ohlcv/historical?start=$BEGIN_TIME&end=$TIME\\","https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=$BEGIN_TIME&to=$TIME\\","https://imgbox.com/iBPrOigI","https://docs.fluxprotocol.org/docs/data-requests/data-requests","https://docs.fluxprotocol.org/docs/getting-started/data-requesters"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | fluxprotocol |
| permlink | nguoi-yeu-cau-du-lieu |
| title | Người yêu cầu dữ liệu |
| Transaction Info | Block #57636857/Trx b87e92057d1810d3f7786eeb688bc1e969ceb4eb |
View Raw JSON Data
{
"block": 57636857,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<h1>Người yêu cầu dữ liệu</h1>\n<p> </p>\n<p>Cách thiết lập hợp đồng thông minh của bạn với tư cách là Người yêu cầu dữ liệu với việc triển khai testnet của Flux trên NEAR</p>\n<h2>Điều kiện tiên quyết</h2>\n<p>Bạn muốn tạo một điểm truy cập vào Flux Oracle để tạo các yêu cầu dữ liệu cần được giải quyết bởi trình xác thực Flux</p>\n<p>Bạn cảm thấy thoải mái với dòng lệnh, GitHub, ví tiền điện tử và chỉnh sửa / triển khai hợp đồng thông minh</p>\n<p>Bạn xác nhận đây là <strong>phiên bản testnet</strong> và việc đưa vào <strong>Sổ đăng ký</strong> người yêu cầu trên mainnet yêu cầu một đề xuất và thực thi thành công với Flux DAO và mỗi yêu cầu dữ liệu sẽ yêu cầu đăng một trái phiếu hợp lệ (không cần tiền thực cho testnet). Thông tin thêm về cách gửi đề xuất tới Flux DAO sẽ được đưa vào một ngày sau đó.</p>\n<h2>Thiết lập hợp đồng</h2>\n<p>Nếu bạn chưa triển khai hợp đồng trên NEAR, hãy làm theo hướng dẫn tại đây để thiết lập tài khoản testnet, môi trường Rust và NEAR CLI.</p>\n<p>Khi bạn đã sắp xếp xong, bạn có thể sao chép hợp đồng mẫu của người yêu cầu tại đây.</p>\n<p>Đầu tiên, đăng nhập vào tài khoản NEAR testnet của bạn bằng lệnh đăng nhập cli <em>near login</em> của NEAR và điền thông tin để thêm thông tin đăng nhập tài khoản cục bộ của bạn và chạy phần còn lại của các lệnh.</p>\n<p>Mở thiết bị đầu cuối và <em>cd</em> của bạn vào thư mục và chạy lệnh sau, thay thế <em>YOUR_TESTNET_ACCT_ID</em> bằng id tài khoản testnet thực của bạn.</p>\n<p><em>1 sh build.sh </em><br /><em>2 sh scripts/deploy_requester.sh --accountId YOUR_TESTNET_ACCT_ID.testnet</em></p>\n<p> </p>\n<p>Trong bản phát hành mainnet, trước tiên bạn sẽ cần yêu cầu đưa hợp đồng của mình vào danh sách trắng với Flux DAO trước khi bạn có thể tương tác với oracle. Nhưng bạn đang gặp may! Chúng tôi sẽ cho bạn cơ hội để kiểm tra nó, một cách không quan liêu!</p>\n<h2>Yêu cầu</h2>\n<p>Bây giờ bạn đã triển khai hợp đồng trên tài khoản testnet của mình, đã đến lúc kích hoạt một yêu cầu! Yêu cầu dữ liệu được tạo bằng cách gọi một phương thức trên hợp đồng Người yêu cầu (thường được đặt tên là <em>create_data_request ())</em> để chuyển tiếp trái phiếu thanh toán tới oracle bằng cách gọi hợp đồng mã thông báo với tải trọng yêu cầu mới.</p>\n<a href=\"https://imgbox.com/95XrIfyB\" target=\"_blank\"><img src=\"https://images2.imgbox.com/db/9e/95XrIfyB_o.png\" alt=\"image host\"/></a>\n<p> </p>\n<p>Như bạn có thể thấy, mỗi yêu cầu dữ liệu có một số lượng và một trọng tải trong đó. Số tiền là <em>validity_bond</em> mà bạn phải đăng cùng với yêu cầu để tương tác với oracle. Điều này nhằm mục đích ngăn chặn các kẻ xấu gửi các oracle rác với các yêu cầu không hợp lệ, trừ khi họ thực sự muốn mất tất cả tiền của mình cho người xác thực. Nếu yêu cầu của bạn bị người xác nhận cho là không hợp lệ, trái phiếu của bạn sẽ được giữ bởi kho bạc.</p>\n<p>Mọi yêu cầu phải đi kèm với một trọng tải chứa một số hoặc tất cả các đối số sau:</p>\n<p> </p>\n<div class=\"codeLine-a3169fbc\" data-key=\"22ec1816d7424561becb9d6f29c2ffc4\"><em>1 pub struct NewDataRequestArgs {</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"b6fb7abba6cd433dad817fc517cf8d64\"><em>2 pub sources: Vec<Source>, // for api DR types, can be left as \"[]\" if arbitrator DR type</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"19a04119531e4f30bd0420eca8461351\"><em>3 pub tags: Option<Vec<String>>, // for searching DR types</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"1e2fa0ae5e31437e8935f83ab3c81174\"><em>4 pub description: Option<String>, // question if arbitrator type, details</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"3c9a3962a81f401890b7ed52a553387b\"><em>5 pub outcomes: Option<Vec<String>>, // for predefining outcomes of DR</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"3c193f62ed334442b94ccf8d71e74b1c\"><em>6 pub challenge_period: WrappedTimestamp, // milliseconds, duration validators can challenge top outcome</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"f3b721ece7ef496fa7729f93c385369e\"><em>7 pub data_type: DataRequestDataType, // type of data DR outcome is</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"df8ad690c5bf413da7ba4d133c76a4bc\"><em>8 pub creator: AccountId, // creator of DR </em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"6e0ac38d7bcf44739768896ed70b540e\" data-slate-fragment=\"JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJwdWIlMjBzdHJ1Y3QlMjBOZXdEYXRhUmVxdWVzdEFyZ3MlMjAlN0IlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHViJTIwc291cmNlcyUzQSUyMFZlYyUzQ1NvdXJjZSUzRSUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyRiUyRiUyMGZvciUyMGFwaSUyMERSJTIwdHlwZXMlMkMlMjBjYW4lMjBiZSUyMGxlZnQlMjBhcyUyMCU1QyUyMiU1QiU1RCU1QyUyMiUyMGlmJTIwYXJiaXRyYXRvciUyMERSJTIwdHlwZSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjB0YWdzJTNBJTIwT3B0aW9uJTNDVmVjJTNDU3RyaW5nJTNFJTNFJTJDJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTJGJTJGJTIwZm9yJTIwc2VhcmNoaW5nJTIwRFIlMjB0eXBlcyUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjBkZXNjcmlwdGlvbiUzQSUyME9wdGlvbiUzQ1N0cmluZyUzRSUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyRiUyRiUyMHF1ZXN0aW9uJTIwaWYlMjBhcmJpdHJhdG9yJTIwdHlwZSUyQyUyMGRldGFpbHMlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHViJTIwb3V0Y29tZXMlM0ElMjBPcHRpb24lM0NWZWMlM0NTdHJpbmclM0UlM0UlMkMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBmb3IlMjBwcmVkZWZpbmluZyUyMG91dGNvbWVzJTIwb2YlMjBEUiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjBjaGFsbGVuZ2VfcGVyaW9kJTNBJTIwV3JhcHBlZFRpbWVzdGFtcCUyQyUyMCUyMCUyMCUyMCUyRiUyRiUyMG1pbGxpc2Vjb25kcyUyQyUyMGR1cmF0aW9uJTIwdmFsaWRhdG9ycyUyMGNhbiUyMGNoYWxsZW5nZSUyMHRvcCUyMG91dGNvbWUlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHViJTIwZGF0YV90eXBlJTNBJTIwRGF0YVJlcXVlc3REYXRhVHlwZSUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyRiUyRiUyMHR5cGUlMjBvZiUyMGRhdGElMjBEUiUyMG91dGNvbWUlMjBpcyUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjBjcmVhdG9yJTNBJTIwQWNjb3VudElkJTJDJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTJGJTJGJTIwY3JlYXRvciUyMG9mJTIwRFIlMjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTdEJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0Q=\"><em>9 }</em></div>\n<p> </p>\n<p><em>Source</em> là:</p>\n<p> </p>\n<div class=\"codeLine-a3169fbc\" data-key=\"888b5089103e4bf7a8343e251ee47bc7\"><em>1 pub struct Source {</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"a6c4955e424c4d0a885d3fb6ec5e6be4\"><em>2 pub end_point: String, // api endpoint, where validator can retrieve outcome</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"b9c07de801bd4abba0fdd93e0f732224\"><em>3 pub source_path: String // json path to outcome </em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"97ad77afa15e4ba49240ba02b0aebf3f\" data-slate-fragment=\"JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJwdWIlMjBzdHJ1Y3QlMjBTb3VyY2UlMjAlN0IlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHViJTIwZW5kX3BvaW50JTNBJTIwU3RyaW5nJTJDJTIwJTIwJTIwJTIwJTJGJTJGJTIwYXBpJTIwZW5kcG9pbnQlMkMlMjB3aGVyZSUyMHZhbGlkYXRvciUyMGNhbiUyMHJldHJpZXZlJTIwb3V0Y29tZSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWIlMjBzb3VyY2VfcGF0aCUzQSUyMFN0cmluZyUyMCUyMCUyMCUyRiUyRiUyMGpzb24lMjBwYXRoJTIwdG8lMjBvdXRjb21lJTIwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiU3RCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdE\"><em>4 }</em></div>\n<p> </p>\n<p>Đối với Yêu cầu dữ liệu API hoặc yêu cầu có kết quả có thể được truy xuất từ một số điểm cuối API nhất định, hãy điền vào điểm cuối bằng [các] điểm cuối API và đường dẫn source_path với đường dẫn (ví dụ: đường dẫn JSON) để nhận được value mong muốn. Ví dụ:</p>\n<p> </p>\n<div class=\"codeLine-a3169fbc\" data-key=\"916879cdb9ef44e0aba53440f64edbb8\"><em>1 \\\"sources\\\": [</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"5526506f69f14da5abb3f7f1ef0740ba\"><em>2 { </em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"9ee7f953ad2c426994396e16c74bc21d\"><em>3 \\\"end_point\\\": \\\"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=1629805695&to=1629806000\\\", </em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"062f3e8ef596480eb1721ba27cc0b301\"><em>4 \\\"source_path\\\": \\\"prices[\\$\\$last][1]\\\" </em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"65b79fac23c54ee29523e40d2c0dc3e4\"><em>5 }</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"2a50b88233e649aaa05e125cec6536f7\" data-slate-fragment=\"JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlNUMlNUMlNUMlMjJzb3VyY2VzJTVDJTVDJTVDJTIyJTNBJTIwJTVCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCU3QiUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJlbmRfcG9pbnQlNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjJodHRwcyUzQSUyRiUyRmFwaS5jb2luZ2Vja28uY29tJTJGYXBpJTJGdjMlMkZjb2lucyUyRmJpdGNvaW4lMkZtYXJrZXRfY2hhcnQlMkZyYW5nZSUzRnZzX2N1cnJlbmN5JTNEdXNkJTI2ZnJvbSUzRDE2Mjk4MDU2OTUlMjZ0byUzRDE2Mjk4MDYwMDAlNUMlNUMlNUMlMjIlMkMlMjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIyc291cmNlX3BhdGglNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjJwcmljZXMlNUIlNUMlNUMlMjQlNUMlNUMlMjRsYXN0JTVEJTVCMSU1RCU1QyU1QyU1QyUyMiUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlN0QlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTVEJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0Q=\"><em>6 ]</em></div>\n<p> </p>\n<p>Đối với các yêu cầu của trọng tài hoặc các yêu cầu thường yêu cầu con người trả lời, Bạn có thể để lại các nguồn mà không có bất kỳ giá trị nào. Ví dụ:</p>\n<a href=\"https://imgbox.com/OHNmYu1k\" target=\"_blank\"><img src=\"https://images2.imgbox.com/c7/68/OHNmYu1k_o.png\" alt=\"image host\"/></a>\n<p> </p>\n<p>LƯU ý: yêu cầu của bạn phải có kết quả được phân định rõ ràng và không thể thay đổi theo thời gian hoặc địa điểm. Ví dụ: việc yêu cầu giá bitcoin hiện tại có thể thay đổi dựa trên thời gian trình xác thực cung cấp hoặc trao đổi / nguồn mà họ đã sử dụng. Cung cấp điểm kết thúc rõ ràng để lấy dữ liệu từ đó một epoch hoặc khoảng thời gian mà dữ liệu cần được thu thập để yêu cầu của bạn được đánh dấu là hợp lệ và không bị thực hiện trái phiếu của bạn.</p>\n<p> </p>\n<p><em>DataRequestDataType</em> là:</p>\n<p> </p>\n<a href=\"https://imgbox.com/BKOaq6Zj\" target=\"_blank\"><img src=\"https://images2.imgbox.com/40/2e/BKOaq6Zj_o.png\" alt=\"image host\"/></a>\n<p> </p>\n<p>Nếu bạn mong đợi kết quả của mình là một con số, hãy điền vào trường <em>data_type</em> dưới dạng Số với giá trị là cấp số nhân cho số đó. Ví dụ:</p>\n<p> </p>\n<a href=\"https://imgbox.com/h0TMy9NY\" target=\"_blank\"><img src=\"https://images2.imgbox.com/03/0a/h0TMy9NY_o.png\" alt=\"image host\"/></a>\n<p> </p>\n<p>Nếu bạn đang mong đợi kết quả là một chuỗi, bạn có thể điền vào trường <em>data_type</em> với giá trị <em>String</em> như sau:</p>\n<p> </p>\n<a href=\"https://imgbox.com/6UuD5NZo\" target=\"_blank\"><img src=\"https://images2.imgbox.com/bf/71/6UuD5NZo_o.png\" alt=\"image host\"/></a>\n<p> </p>\n<p>Sử dụng các thẻ để phân loại yêu cầu dữ liệu để truy vấn dễ dàng hơn sau này khi cần kết quả. Các thẻ rất linh hoạt và có thể được sử dụng để nhóm nhiều loại yêu cầu dữ liệu lại với nhau. Trong ví dụ của chúng tôi, chúng tôi sử dụng một số tự động tăng dần để dễ dàng liên kết từng yêu cầu dữ liệu với kết quả của nó.</p>\n<p>Mô tả có thể được điền vào dữ liệu được yêu cầu, ví dụ: “Giá đóng cửa của Bitcoin vào ngày 1 tháng 12 năm 2020 là bao nhiêu?”</p>\n<p>Như một tùy chọn, bạn có thể thêm danh sách các kết quả có thể mong đợi làm giá trị cho trường kết quả. Nó cũng có thể được để trống trong trường hợp có câu trả lời tùy ý, chẳng hạn như từ nguồn cấp dữ liệu giá.</p>\n<p><em>Challenge_period</em> là khoảng thời gian để người xác thực đặt cược vào kết quả sau khi đạt đến thời gian giải quyết. Khoảng thời gian này có kỳ hạn tối thiểu là 300.000ms (5 phút) và kỳ hạn tối đa là 86.400.000ms (24 giờ).</p>\n<p>Người tạo yêu cầu dữ liệu, thường được đặt tự động bởi Giao diện yêu cầu.</p>\n<h3>Yêu cầu API</h3>\n<p>Nhiều yêu cầu sẽ được thực hiện sẽ yêu cầu câu trả lời từ một vị trí API cụ thể. Trong trường hợp này, bạn phải điền vào <em>end_point</em> và <em>source_path</em> trong phần <em>sources</em> để có thể tìm thấy một kết quả duy nhất. Nếu bạn là một giao thức cần thực hiện các yêu cầu tự động, bạn có thể làm như vậy khá dễ dàng bằng cách thiết lập các yêu cầu API.</p>\n<p>Sau khi được điền, các đối số yêu cầu dữ liệu có thể trông giống như sau:</p>\n<p> </p>\n<div class=\"codeLine-a3169fbc\" data-key=\"88e9bd53725b4fd18e2cd6fd57828521\"><em>1 \"{</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"2e573d868f8c48518bfec0a5b0dcff8e\"><em>2 \\\"amount\\\": \\\"1000000000000000000000000\\\", </em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"f8d5830786cc440382c3239537297cba\"><em>3 \\\"payload\\\": {</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"0dd4b0b2583e4050913fc40ac7701544\"><em>4 \\\"sources\\\": [</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"82c8a6e1fc01429dbe7bdcedf501e58a\"><em>5 {</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"e54313b8d35a4d06ba5876269897d4f8\"><em>6 \\\"end_point\\\": \\\"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=1629805695&to=1629806000\\\", </em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"475484b19b824635b753bedae22e2d8f\"><em>7 \\\"source_path\\\": \\\"prices[\\$\\$last][1]\\\" </em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"470ff018afbb44a2b3d57e100c0899fe\"><em>8 }</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"f34db5bcd4d04f92af187f7d4a3e5eeb\"><em>9 ],</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"412319d5a40941cf84612f2e61497b31\"><em>10 \\\"tags\\\":[\\\"pricing\\\",\\\"btc\\\"],</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"d36137c77b7d4d88a235b02d2b6ec11e\"><em>11 \\\"challenge_period\\\":\\\"120000000000\\\",</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"52d8575468c04200b0f15a8ff7324bdd\"><em>12 \\\"settlement_time\\\":\\\"1\\\",</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"ad89f35b8b9c4bf1980f0f26a1649b40\"><em>13 \\\"data_type\\\":{</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"f0673b0e14c149da952f0c65deaba621\"><em>14 \\\"Number\\\":\\\"10000000000\\\"</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"b31b2219b7fc406abf2466a92717e1b1\"><em>15 },</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"8e5818f6a25f4497a479388a8fbd0f14\"><em>16 \\\"creator\\\":\\\"YOUR_TESTNET_ACCOUNT_ID\\\"</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"3880ba22d974424e9366c9fa2a92557e\"><em>17 }</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"46ec56e1f8104b9ea817220ffad39931\" data-slate-fragment=\"JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlNUMlMjIlN0IlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIyYW1vdW50JTVDJTVDJTVDJTIyJTNBJTIwJTVDJTVDJTVDJTIyMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCU1QyU1QyU1QyUyMiUyQyUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJwYXlsb2FkJTVDJTVDJTVDJTIyJTNBJTIwJTdCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyU1QyU1QyUyMnNvdXJjZXMlNUMlNUMlNUMlMjIlM0ElMjAlNUIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyU1QyU1QyUyMmVuZF9wb2ludCU1QyU1QyU1QyUyMiUzQSUyMCU1QyU1QyU1QyUyMmh0dHBzJTNBJTJGJTJGYXBpLmNvaW5nZWNrby5jb20lMkZhcGklMkZ2MyUyRmNvaW5zJTJGYml0Y29pbiUyRm1hcmtldF9jaGFydCUyRnJhbmdlJTNGdnNfY3VycmVuY3klM0R1c2QlMjZmcm9tJTNEMTYyOTgwNTY5NSUyNnRvJTNEMTYyOTgwNjAwMCU1QyU1QyU1QyUyMiUyQyUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJzb3VyY2VfcGF0aCU1QyU1QyU1QyUyMiUzQSUyMCU1QyU1QyU1QyUyMnByaWNlcyU1QiU1QyU1QyUyNCU1QyU1QyUyNGxhc3QlNUQlNUIxJTVEJTVDJTVDJTVDJTIyJTIwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUQlMkMlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIydGFncyU1QyU1QyU1QyUyMiUzQSU1QiU1QyU1QyU1QyUyMnByaWNpbmclNUMlNUMlNUMlMjIlMkMlNUMlNUMlNUMlMjJidGMlNUMlNUMlNUMlMjIlNUQlMkMlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIyY2hhbGxlbmdlX3BlcmlvZCU1QyU1QyU1QyUyMiUzQSU1QyU1QyU1QyUyMjEyMDAwMDAwMDAwMCU1QyU1QyU1QyUyMiUyQyUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJzZXR0bGVtZW50X3RpbWUlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxJTVDJTVDJTVDJTIyJTJDJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyU1QyU1QyUyMmRhdGFfdHlwZSU1QyU1QyU1QyUyMiUzQSU3QiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlNUMlNUMlMjJOdW1iZXIlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxMDAwMDAwMDAwMCU1QyU1QyU1QyUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTVDJTVDJTIyY3JlYXRvciU1QyU1QyU1QyUyMiUzQSU1QyU1QyU1QyUyMllPVVJfVEVTVE5FVF9BQ0NPVU5UX0lEJTVDJTVDJTVDJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCU3RCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlN0QlNUMlMjIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RA==\"><em>18 }\"</em></div>\n<p> </p>\n<p>Khi đã sẵn sàng, bạn có thể thực hiện yêu cầu dữ liệu của mình bằng các lệnh sau hoặc chạy <em>sh scripts / request.sh YOUR_TESTNET_ACCOUNT_ID:</em></p>\n<p> </p>\n<div class=\"codeLine-a3169fbc\" data-key=\"043bcec2b75e4276b4620409c5d91c27\"><em>1 env NEAR_ENV=testnet</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"d26c485f71104bbfb8ef91907a321d9d\"><em>2</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"384cb69281f64eb1bf803186535500e9\"><em>3 TIME=`date +%s`</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"36e4525ba77e46199cfa2a5455413857\"><em>4 END_TIME=`expr $TIME`</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"5f8c98e5aa2d4125a0bee4fa5114709d\"><em>5 BEGIN_TIME=`expr $END_TIME - 300`</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"5424c14364834f47a2de14cd3be21e3b\"><em>6 SOURCES=\"[{ \\\"source_path\\\": \\\"0.close\\\", \\\"end_point\\\": \\\"https://api.coinpaprika.com/v1/coins/btc-bitcoin/ohlcv/historical?start=$BEGIN_TIME&end=$TIME\\\" }, { \\\"end_point\\\": \\\"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=$BEGIN_TIME&to=$TIME\\\", \\\"source_path\\\": \\\"prices[\\$\\$last][1]\\\" }]\"</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"24ff917c82d448a6bea394983a788d49\"><em>7 JSON=\"{\\\"sources\\\": $SOURCES,\\\"tags\\\":[\\\"1\\\"],\\\"description\\\":\\\"What is the price of BTC?\\\",\\\"challenge_period\\\":\\\"120000000000\\\",\\\"settlement_time\\\":\\\"1\\\",\\\"data_type\\\":{\\\"Number\\\":\\\"10000000000\\\"},\\\"creator\\\":\\\"your_account_id.flux-dev\\\"}\"</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"ffe0467ae0d6432eb8c9787476537dbb\" data-slate-fragment=\"JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJlbnYlMjBORUFSX0VOViUzRHRlc3RuZXQlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUtbGluZSUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMlRJTUUlM0QlNjBkYXRlJTIwJTJCJTI1cyU2MCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJFTkRfVElNRSUzRCU2MGV4cHIlMjAlMjRUSU1FJTYwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMkJFR0lOX1RJTUUlM0QlNjBleHByJTIwJTI0RU5EX1RJTUUlMjAtJTIwMzAwJTYwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMlNPVVJDRVMlM0QlNUMlMjIlNUIlN0IlMjAlNUMlNUMlNUMlMjJzb3VyY2VfcGF0aCU1QyU1QyU1QyUyMiUzQSUyMCU1QyU1QyU1QyUyMjAuY2xvc2UlNUMlNUMlNUMlMjIlMkMlMjAlNUMlNUMlNUMlMjJlbmRfcG9pbnQlNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjJodHRwcyUzQSUyRiUyRmFwaS5jb2lucGFwcmlrYS5jb20lMkZ2MSUyRmNvaW5zJTJGYnRjLWJpdGNvaW4lMkZvaGxjdiUyRmhpc3RvcmljYWwlM0ZzdGFydCUzRCUyNEJFR0lOX1RJTUUlMjZlbmQlM0QlMjRUSU1FJTVDJTVDJTVDJTIyJTIwJTdEJTJDJTIwJTdCJTIwJTVDJTVDJTVDJTIyZW5kX3BvaW50JTVDJTVDJTVDJTIyJTNBJTIwJTVDJTVDJTVDJTIyaHR0cHMlM0ElMkYlMkZhcGkuY29pbmdlY2tvLmNvbSUyRmFwaSUyRnYzJTJGY29pbnMlMkZiaXRjb2luJTJGbWFya2V0X2NoYXJ0JTJGcmFuZ2UlM0Z2c19jdXJyZW5jeSUzRHVzZCUyNmZyb20lM0QlMjRCRUdJTl9USU1FJTI2dG8lM0QlMjRUSU1FJTVDJTVDJTVDJTIyJTJDJTIwJTVDJTVDJTVDJTIyc291cmNlX3BhdGglNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjJwcmljZXMlNUIlNUMlNUMlMjQlNUMlNUMlMjRsYXN0JTVEJTVCMSU1RCU1QyU1QyU1QyUyMiUyMCU3RCU1RCU1QyUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJKU09OJTNEJTVDJTIyJTdCJTVDJTVDJTVDJTIyc291cmNlcyU1QyU1QyU1QyUyMiUzQSUyMCUyNFNPVVJDRVMlMkMlNUMlNUMlNUMlMjJ0YWdzJTVDJTVDJTVDJTIyJTNBJTVCJTVDJTVDJTVDJTIyMSU1QyU1QyU1QyUyMiU1RCUyQyU1QyU1QyU1QyUyMmRlc2NyaXB0aW9uJTVDJTVDJTVDJTIyJTNBJTVDJTVDJTVDJTIyV2hhdCUyMGlzJTIwdGhlJTIwcHJpY2UlMjBvZiUyMEJUQyUzRiU1QyU1QyU1QyUyMiUyQyU1QyU1QyU1QyUyMmNoYWxsZW5nZV9wZXJpb2QlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxMjAwMDAwMDAwMDAlNUMlNUMlNUMlMjIlMkMlNUMlNUMlNUMlMjJzZXR0bGVtZW50X3RpbWUlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxJTVDJTVDJTVDJTIyJTJDJTVDJTVDJTVDJTIyZGF0YV90eXBlJTVDJTVDJTVDJTIyJTNBJTdCJTVDJTVDJTVDJTIyTnVtYmVyJTVDJTVDJTVDJTIyJTNBJTVDJTVDJTVDJTIyMTAwMDAwMDAwMDAlNUMlNUMlNUMlMjIlN0QlMkMlNUMlNUMlNUMlMjJjcmVhdG9yJTVDJTVDJTVDJTIyJTNBJTVDJTVDJTVDJTIyeW91cl9hY2NvdW50X2lkLmZsdXgtZGV2JTVDJTVDJTVDJTIyJTdEJTVDJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMmVudiUyME5FQVJfRU5WJTNEdGVzdG5ldCUyMG5lYXIlMjBjYWxsJTIwJTI0MSUyMGNyZWF0ZV9kYXRhX3JlcXVlc3QlMjAlNUMlMjIlN0IlNUMlNUMlNUMlMjJhbW91bnQlNUMlNUMlNUMlMjIlM0ElMjAlNUMlNUMlNUMlMjIxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJTVDJTVDJTVDJTIyJTJDJTIwJTVDJTVDJTVDJTIycGF5bG9hZCU1QyU1QyU1QyUyMiUzQSUyMCUyNEpTT04lN0QlNUMlMjIlMjAtLWFjY291bnRJZCUyMCUyNDElMjAtLWFtb3VudCUyMDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJTIwLS1nYXMlM0QzMDAwMDAwMDAwMDAwMDAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RA==\"><em>8 env NEAR_ENV=testnet near call $1 create_data_request \"{\\\"amount\\\": \\\"1000000000000000000000000\\\", \\\"payload\\\": $JSON}\" --accountId $1 --amount 0.000000000000000000000001 --gas=300000000000000</em></div>\n<p> </p>\n<p>Vậy là bạn đã thực hiện yêu cầu dữ liệu đầu tiên của mình!</p>\n<h3>Yêu cầu của trọng tài (con người)</h3>\n<p>Điều gì xảy ra nếu yêu cầu của bạn không có một API cụ thể mà bạn muốn có câu trả lời? Không vấn đề gì!</p>\n<p>Chỉ cần đưa câu hỏi vào phần <em>description</em>, thay đổi <em>data_type</em> và để trống các nguồn.</p>\n<div class=\"codeLine-a3169fbc\" data-key=\"0dbcb8dae6c94575b0386f4eda25ef2e\"><em>1 JSON=\"{\\\"sources\\\": [],\\\"tags\\\":[\\\"sports\\\",\\\"nfl\\\"],\\\"description\\\":\\\"Which team won the NFL Super Bowl in 1996?\\\",\\\"challenge_period\\\":\\\"120000000000\\\",\\\"settlement_time\\\":\\\"1\\\",\\\"data_type\\\":\\\"String\\\",\\\"creator\\\":\\\"your_account_id.flux-dev\\\"}\"</em></div>\n<div class=\"codeLine-a3169fbc\" data-key=\"484c50b044d64b2b9969795156ee178c\" data-slate-fragment=\"JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIydGV4dCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJKU09OJTNEJTVDJTIyJTdCJTVDJTVDJTVDJTIyc291cmNlcyU1QyU1QyU1QyUyMiUzQSUyMCU1QiU1RCUyQyU1QyU1QyU1QyUyMnRhZ3MlNUMlNUMlNUMlMjIlM0ElNUIlNUMlNUMlNUMlMjJzcG9ydHMlNUMlNUMlNUMlMjIlMkMlNUMlNUMlNUMlMjJuZmwlNUMlNUMlNUMlMjIlNUQlMkMlNUMlNUMlNUMlMjJkZXNjcmlwdGlvbiU1QyU1QyU1QyUyMiUzQSU1QyU1QyU1QyUyMldoaWNoJTIwdGVhbSUyMHdvbiUyMHRoZSUyME5GTCUyMFN1cGVyJTIwQm93bCUyMGluJTIwMTk5NiUzRiU1QyU1QyU1QyUyMiUyQyU1QyU1QyU1QyUyMmNoYWxsZW5nZV9wZXJpb2QlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxMjAwMDAwMDAwMDAlNUMlNUMlNUMlMjIlMkMlNUMlNUMlNUMlMjJzZXR0bGVtZW50X3RpbWUlNUMlNUMlNUMlMjIlM0ElNUMlNUMlNUMlMjIxJTVDJTVDJTVDJTIyJTJDJTVDJTVDJTVDJTIyZGF0YV90eXBlJTVDJTVDJTVDJTIyJTNBJTVDJTVDJTVDJTIyU3RyaW5nJTVDJTVDJTVDJTIyJTJDJTVDJTVDJTVDJTIyY3JlYXRvciU1QyU1QyU1QyUyMiUzQSU1QyU1QyU1QyUyMnlvdXJfYWNjb3VudF9pZC5mbHV4LWRldiU1QyU1QyU1QyUyMiU3RCU1QyUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZS1saW5lJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJlbnYlMjBORUFSX0VOViUzRHRlc3RuZXQlMjBuZWFyJTIwY2FsbCUyMCUyNDElMjBjcmVhdGVfZGF0YV9yZXF1ZXN0JTIwJTVDJTIyJTdCJTVDJTVDJTVDJTIyYW1vdW50JTVDJTVDJTVDJTIyJTNBJTIwJTVDJTVDJTVDJTIyMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCU1QyU1QyU1QyUyMiUyQyUyMCU1QyU1QyU1QyUyMnBheWxvYWQlNUMlNUMlNUMlMjIlM0ElMjAlMjRKU09OJTdEJTVDJTIyJTIwLS1hY2NvdW50SWQlMjAlMjQxJTIwLS1hbW91bnQlMjAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSUyMC0tZ2FzJTNEMzAwMDAwMDAwMDAwMDAwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0Q=\"><em>2 env NEAR_ENV=testnet near call $1 create_data_request \"{\\\"amount\\\": \\\"1000000000000000000000000\\\", \\\"payload\\\": $JSON}\" --accountId $1 --amount 0.000000000000000000000001 --gas=300000000000000</em></div>\n<h3>Nhận kết quả của các yêu cầu</h3>\n<p>Khi bạn đã gửi yêu cầu thành công, bạn có thể kiểm tra tiến trình trong Oracle Explorer, xem ai đang đặt cược và kết quả tiềm năng là gì. Sau khi một kết quả, hoặc câu trả lời cho yêu cầu của bạn, được cung cấp đủ ràng buộc và không có tranh chấp chống lại nó, bạn sẽ nhận được kết quả của mình thông qua hàm <em>set_outcome</em> được gọi bởi oracle. Trong hợp đồng mẫu của chúng tôi, kết quả được lưu trữ trong bản đồ tra cứu <em>data_responses</em> với cùng một khóa (giá trị tự động tăng dần) như yêu cầu dữ liệu tương ứng của nó.</p>\n<p>Để kiểm tra yêu cầu và phản hồi của bạn (kết quả yêu cầu), hãy chạy các lệnh sau, thay thế <em>YOUR_TESTNET_ACCOUNT_ID</em> bằng id tài khoản testnet của bạn và <em>YOUR_REQUEST_NONCE</em> bằng dòng chữ nonce trong thẻ DR:</p>\n<p> </p>\n<a href=\"https://imgbox.com/iBPrOigI\" target=\"_blank\"><img src=\"https://images2.imgbox.com/76/8d/iBPrOigI_o.png\" alt=\"image host\"/></a>\n<p> </p>\n<p>Hàm <em>get_data_request</em> sẽ trả về <em>Option <DataRequest></em> và hàm <em>get_data_response</em> sẽ trả về <em>Option <DataResponse></em>.</p>\n<p>Để tìm hiểu thêm về cách Yêu cầu dữ liệu chảy qua Oracle, hãy xem phần <a href=\"https://docs.fluxprotocol.org/docs/data-requests/data-requests\">Yêu cầu dữ liệu tại đây</a>.</p>\n<p><strong>Nguồn:</strong> https://docs.fluxprotocol.org/docs/getting-started/data-requesters</p>",
"json_metadata": "{\"tags\":[\"fluxprotocol\",\"vietnamese\",\"oracle\",\"blockchain\",\"crypto\"],\"image\":[\"https://images2.imgbox.com/db/9e/95XrIfyB_o.png\",\"https://images2.imgbox.com/c7/68/OHNmYu1k_o.png\",\"https://images2.imgbox.com/40/2e/BKOaq6Zj_o.png\",\"https://images2.imgbox.com/03/0a/h0TMy9NY_o.png\",\"https://images2.imgbox.com/bf/71/6UuD5NZo_o.png\",\"https://images2.imgbox.com/76/8d/iBPrOigI_o.png\"],\"links\":[\"https://imgbox.com/95XrIfyB\",\"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=1629805695&to=1629806000\\\\\",\"https://imgbox.com/OHNmYu1k\",\"https://imgbox.com/BKOaq6Zj\",\"https://imgbox.com/h0TMy9NY\",\"https://imgbox.com/6UuD5NZo\",\"https://api.coinpaprika.com/v1/coins/btc-bitcoin/ohlcv/historical?start=$BEGIN_TIME&end=$TIME\\\\\",\"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=$BEGIN_TIME&to=$TIME\\\\\",\"https://imgbox.com/iBPrOigI\",\"https://docs.fluxprotocol.org/docs/data-requests/data-requests\",\"https://docs.fluxprotocol.org/docs/getting-started/data-requesters\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "fluxprotocol",
"permlink": "nguoi-yeu-cau-du-lieu",
"title": "Người yêu cầu dữ liệu"
}
],
"op_in_trx": 0,
"timestamp": "2021-09-28T06:04:36",
"trx_id": "b87e92057d1810d3f7786eeb688bc1e969ceb4eb",
"trx_in_block": 9,
"virtual_op": 0
}nhanhoang91published a new post: nguoi-xac-thuc-du-lieu2021/09/22 06:46:21
nhanhoang91published a new post: nguoi-xac-thuc-du-lieu
2021/09/22 06:46:21
| author | nhanhoang91 |
| body | @@ -4433,12 +4433,103 @@ xplorer.%3C/p%3E +%0A%3Cstrong%3ENgu%E1%BB%93n:%3C/strong%3E https://docs.fluxprotocol.org/docs/getting-started/data-validators |
| json metadata | {"tags":["fluxprotocol","oracles","fluxvietnam"],"image":["https://images2.imgbox.com/fe/e6/o4prSYQK_o.png","https://images2.imgbox.com/cc/28/KBrU7vgm_o.png","https://images2.imgbox.com/26/28/mq6tcl3P_o.png","https://images2.imgbox.com/a6/90/xBwZSBOg_o.png"],"links":["https://imgbox.com/o4prSYQK","https://imgbox.com/KBrU7vgm","https://imgbox.com/mq6tcl3P","https://imgbox.com/xBwZSBOg","https://docs.fluxprotocol.org/docs/getting-started/data-validators"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | nguoi-xac-thuc-du-lieu |
| title | Người Xác Thực Dữ Liệu |
| Transaction Info | Block #57466686/Trx eecbbfb6b5618ee21c735f2bf06c205e41488c1a |
View Raw JSON Data
{
"block": 57466686,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "@@ -4433,12 +4433,103 @@\n xplorer.%3C/p%3E\n+%0A%3Cstrong%3ENgu%E1%BB%93n:%3C/strong%3E https://docs.fluxprotocol.org/docs/getting-started/data-validators\n",
"json_metadata": "{\"tags\":[\"fluxprotocol\",\"oracles\",\"fluxvietnam\"],\"image\":[\"https://images2.imgbox.com/fe/e6/o4prSYQK_o.png\",\"https://images2.imgbox.com/cc/28/KBrU7vgm_o.png\",\"https://images2.imgbox.com/26/28/mq6tcl3P_o.png\",\"https://images2.imgbox.com/a6/90/xBwZSBOg_o.png\"],\"links\":[\"https://imgbox.com/o4prSYQK\",\"https://imgbox.com/KBrU7vgm\",\"https://imgbox.com/mq6tcl3P\",\"https://imgbox.com/xBwZSBOg\",\"https://docs.fluxprotocol.org/docs/getting-started/data-validators\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "nguoi-xac-thuc-du-lieu",
"title": "Người Xác Thực Dữ Liệu"
}
],
"op_in_trx": 0,
"timestamp": "2021-09-22T06:46:21",
"trx_id": "eecbbfb6b5618ee21c735f2bf06c205e41488c1a",
"trx_in_block": 7,
"virtual_op": 0
}2021/09/22 06:45:12
2021/09/22 06:45:12
| author | nhanhoang91 |
| permlink | an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol |
| voter | sqube |
| weight | 25 (0.25%) |
| Transaction Info | Block #57466663/Trx ea0d15bf54bba2634439d93fb301e4d1179277ba |
View Raw JSON Data
{
"block": 57466663,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol",
"voter": "sqube",
"weight": 25
}
],
"op_in_trx": 0,
"timestamp": "2021-09-22T06:45:12",
"trx_id": "ea0d15bf54bba2634439d93fb301e4d1179277ba",
"trx_in_block": 8,
"virtual_op": 0
}nhanhoang91published a new post: an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol2021/09/22 06:45:06
nhanhoang91published a new post: an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol
2021/09/22 06:45:06
| author | nhanhoang91 |
| body | <a href="https://imgbox.com/ZrvB7CH7" target="_blank"><img src="https://images2.imgbox.com/3f/1a/ZrvB7CH7_o.png" alt="image host"/></a> <p>On the evening of May 20, an Oracle project on NEAR was invested by many large funds worth $10M, including Coinbase Ventures, Coinfund, IOSG Ventures, Distributed Global and some others. With the ambition to become the new leader in Blockchain Oracle field, let's deep-learning about Flux Protocol - the first Oracle project developed on NEAR!</p> <h1>What is Flux Protocol?</h1> <p>Flux Protocol is an Oracle protocol (in the Layer 2 Infrastructure) that helps to put off-chain data to blockchain and provide data for applications to index, query, and verify data, or feed it directly to dApps for usage.</p> <p>Currently, Flux Protocol has been providing data for more than 10 projects, with more than 10,000 SDKs, including two prominent dApps on NEAR Protocol, Stake GG and Pulse Prediction Market.</p> <a href="https://imgbox.com/SFE3ZV2Z" target="_blank"><img src="https://images2.imgbox.com/97/14/SFE3ZV2Z_o.png" alt="image host"/></a> <h1>Highlights of Flux Protocol</h1> <p>Currently, in terms of how the project works, the mechanism of protocol is quite similar to other oracles on the market.</p> <p>Flux Protocol’s oracle also gets real-life data through the action of validators – who have the mission to provide accurate off-chain data onto the blockchain. These Validators have to mortgage an amount of assets to ensure that they will provide correct real-life data to the blockchain. If they provide false information, and are discovered by other validators, they can be disputed through the voting system and lose their collateral if they lose the case.</p> <a href="https://imgbox.com/am0GAa5d" target="_blank"><img src="https://images2.imgbox.com/97/8a/am0GAa5d_o.png" alt="image host"/></a> <p>Currently, Flux Protocol is the first oracle that was originally developed on top of NEAR Protocol. Oracle land on NEAR also has other big players such as ChainLink and Band Protocol, but the products of both sides are not officially running mainnet on NEAR.</p> <p>In the Near Protocol ecosystem, NEAR and Flux Protocol are two projects that have been invested by Coinbase Ventures. This proves that Coinbase pays a lot of attention to the NEAR ecosystem, and maybe Coinbase will continue to appear in the list of investors of the next projects on NEAR.</p> <h1>Project Team, Investors & Partners</h1> <h2>Investors</h2> <p>This week, Flux successfully raised an investment of $10.3M through a private funding round of the project, with 6 participating names including Coinbase Ventures, Coinfund, IOSG Ventures, Distributed Global and several other funds.</p> <p>You can see, among the other names, there are many big names, making this project very hot at the moment.</p> <p>With such a large number of backers, the project certainly has great ambitions and is extremely bullish at the moment.</p> <a href="https://imgbox.com/umLkrZnU" target="_blank"><img src="https://images2.imgbox.com/3b/5b/umLkrZnU_o.jpg" alt="image host"/></a> <h2>Development team</h2> <p>The project team is also very strong, with most of the members having backgrounds in web2/web3 development or worked for popular projects such as bZx, Harmony, Bitmax, etc.</p> <h2>Partners</h2> <p>Currently, the project has more than 10 project partners using their oracle.</p> <h1>Similar projects</h1> <p>ChainLink (LINK): Decentralized Oracle network founded in 2017 by Smart Contract Chainlink Ltd., based in Cayman Islands.</p> <p>Band Protocol (BAND): Blockchain protocol in the field of data management. It is the Web 3.0 layer that addresses data, reliability, and quality issues of data information for Web 3.0 applications.</p> <p>Kylin Protocol (KYL): A decentralized Oracle network built on a Polkadot Substrate.</p> <a href="https://imgbox.com/hcgf6uhK" target="_blank"><img src="https://images2.imgbox.com/46/73/hcgf6uhK_o.png" alt="image host"/></a> <p>Flux Protocol project includes a number of best things: experience team, innovative product, excellent idea, great start! We need good ideas, but more importantly, we also need real products and massive adoption and Flux Protocol has all of them! Pulse Market, Stake GG are using them and many more is coming. With this well preparation from Flux Team, it is clear that the company will occupy a leading place in this space in the near future!</p> <p><strong>Website:</strong> https://www.fluxprotocol.org/</p> |
| json metadata | {"tags":["fluxprotocol","oracles","blockchaindata","crypto","cryptocurrency"],"image":["https://images2.imgbox.com/3f/1a/ZrvB7CH7_o.png","https://images2.imgbox.com/97/14/SFE3ZV2Z_o.png","https://images2.imgbox.com/97/8a/am0GAa5d_o.png","https://images2.imgbox.com/3b/5b/umLkrZnU_o.jpg","https://images2.imgbox.com/46/73/hcgf6uhK_o.png"],"links":["https://imgbox.com/ZrvB7CH7","https://imgbox.com/SFE3ZV2Z","https://imgbox.com/am0GAa5d","https://imgbox.com/umLkrZnU","https://imgbox.com/hcgf6uhK","https://www.fluxprotocol.org/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | fluxprotocol |
| permlink | an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol |
| title | AN OVERVIEW OF FLUX PROTOCOL, THE FIRST ORACLE PROJECT BUILT ON NEAR PROTOCOL |
| Transaction Info | Block #57466661/Trx 1f72060e18e9aeb657a6c9a8079d39134c03aaf3 |
View Raw JSON Data
{
"block": 57466661,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<a href=\"https://imgbox.com/ZrvB7CH7\" target=\"_blank\"><img src=\"https://images2.imgbox.com/3f/1a/ZrvB7CH7_o.png\" alt=\"image host\"/></a>\n<p>On the evening of May 20, an Oracle project on NEAR was invested by many large funds worth $10M, including Coinbase Ventures, Coinfund, IOSG Ventures, Distributed Global and some others. With the ambition to become the new leader in Blockchain Oracle field, let's deep-learning about Flux Protocol - the first Oracle project developed on NEAR!</p>\n<h1>What is Flux Protocol?</h1>\n<p>Flux Protocol is an Oracle protocol (in the Layer 2 Infrastructure) that helps to put off-chain data to blockchain and provide data for applications to index, query, and verify data, or feed it directly to dApps for usage.</p>\n<p>Currently, Flux Protocol has been providing data for more than 10 projects, with more than 10,000 SDKs, including two prominent dApps on NEAR Protocol, Stake GG and Pulse Prediction Market.</p>\n<a href=\"https://imgbox.com/SFE3ZV2Z\" target=\"_blank\"><img src=\"https://images2.imgbox.com/97/14/SFE3ZV2Z_o.png\" alt=\"image host\"/></a>\n<h1>Highlights of Flux Protocol</h1>\n<p>Currently, in terms of how the project works, the mechanism of protocol is quite similar to other oracles on the market.</p>\n<p>Flux Protocol’s oracle also gets real-life data through the action of validators – who have the mission to provide accurate off-chain data onto the blockchain. These Validators have to mortgage an amount of assets to ensure that they will provide correct real-life data to the blockchain. If they provide false information, and are discovered by other validators, they can be disputed through the voting system and lose their collateral if they lose the case.</p>\n<a href=\"https://imgbox.com/am0GAa5d\" target=\"_blank\"><img src=\"https://images2.imgbox.com/97/8a/am0GAa5d_o.png\" alt=\"image host\"/></a>\n<p>Currently, Flux Protocol is the first oracle that was originally developed on top of NEAR Protocol. Oracle land on NEAR also has other big players such as ChainLink and Band Protocol, but the products of both sides are not officially running mainnet on NEAR.</p>\n<p>In the Near Protocol ecosystem, NEAR and Flux Protocol are two projects that have been invested by Coinbase Ventures. This proves that Coinbase pays a lot of attention to the NEAR ecosystem, and maybe Coinbase will continue to appear in the list of investors of the next projects on NEAR.</p>\n<h1>Project Team, Investors & Partners</h1>\n<h2>Investors</h2>\n<p>This week, Flux successfully raised an investment of $10.3M through a private funding round of the project, with 6 participating names including Coinbase Ventures, Coinfund, IOSG Ventures, Distributed Global and several other funds.</p>\n<p>You can see, among the other names, there are many big names, making this project very hot at the moment.</p>\n<p>With such a large number of backers, the project certainly has great ambitions and is extremely bullish at the moment.</p>\n<a href=\"https://imgbox.com/umLkrZnU\" target=\"_blank\"><img src=\"https://images2.imgbox.com/3b/5b/umLkrZnU_o.jpg\" alt=\"image host\"/></a>\n<h2>Development team</h2>\n<p>The project team is also very strong, with most of the members having backgrounds in web2/web3 development or worked for popular projects such as bZx, Harmony, Bitmax, etc.</p>\n<h2>Partners</h2>\n<p>Currently, the project has more than 10 project partners using their oracle.</p>\n<h1>Similar projects</h1>\n<p>ChainLink (LINK): Decentralized Oracle network founded in 2017 by Smart Contract Chainlink Ltd., based in Cayman Islands.</p>\n<p>Band Protocol (BAND): Blockchain protocol in the field of data management. It is the Web 3.0 layer that addresses data, reliability, and quality issues of data information for Web 3.0 applications.</p>\n<p>Kylin Protocol (KYL): A decentralized Oracle network built on a Polkadot Substrate.</p>\n<a href=\"https://imgbox.com/hcgf6uhK\" target=\"_blank\"><img src=\"https://images2.imgbox.com/46/73/hcgf6uhK_o.png\" alt=\"image host\"/></a>\n<p>Flux Protocol project includes a number of best things: experience team, innovative product, excellent idea, great start! We need good ideas, but more importantly, we also need real products and massive adoption and Flux Protocol has all of them! Pulse Market, Stake GG are using them and many more is coming. With this well preparation from Flux Team, it is clear that the company will occupy a leading place in this space in the near future!</p>\n<p><strong>Website:</strong> https://www.fluxprotocol.org/</p>",
"json_metadata": "{\"tags\":[\"fluxprotocol\",\"oracles\",\"blockchaindata\",\"crypto\",\"cryptocurrency\"],\"image\":[\"https://images2.imgbox.com/3f/1a/ZrvB7CH7_o.png\",\"https://images2.imgbox.com/97/14/SFE3ZV2Z_o.png\",\"https://images2.imgbox.com/97/8a/am0GAa5d_o.png\",\"https://images2.imgbox.com/3b/5b/umLkrZnU_o.jpg\",\"https://images2.imgbox.com/46/73/hcgf6uhK_o.png\"],\"links\":[\"https://imgbox.com/ZrvB7CH7\",\"https://imgbox.com/SFE3ZV2Z\",\"https://imgbox.com/am0GAa5d\",\"https://imgbox.com/umLkrZnU\",\"https://imgbox.com/hcgf6uhK\",\"https://www.fluxprotocol.org/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "fluxprotocol",
"permlink": "an-overview-of-flux-protocol-the-first-oracle-project-built-on-near-protocol",
"title": "AN OVERVIEW OF FLUX PROTOCOL, THE FIRST ORACLE PROJECT BUILT ON NEAR PROTOCOL"
}
],
"op_in_trx": 0,
"timestamp": "2021-09-22T06:45:06",
"trx_id": "1f72060e18e9aeb657a6c9a8079d39134c03aaf3",
"trx_in_block": 7,
"virtual_op": 0
}squbeupvoted (0.25%) @nhanhoang91 / nguoi-xac-thuc-du-lieu2021/09/22 06:26:18
squbeupvoted (0.25%) @nhanhoang91 / nguoi-xac-thuc-du-lieu
2021/09/22 06:26:18
| author | nhanhoang91 |
| permlink | nguoi-xac-thuc-du-lieu |
| voter | sqube |
| weight | 25 (0.25%) |
| Transaction Info | Block #57466288/Trx 4e17dd13f58809cc3493f1c0a883b938239be676 |
View Raw JSON Data
{
"block": 57466288,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "nguoi-xac-thuc-du-lieu",
"voter": "sqube",
"weight": 25
}
],
"op_in_trx": 0,
"timestamp": "2021-09-22T06:26:18",
"trx_id": "4e17dd13f58809cc3493f1c0a883b938239be676",
"trx_in_block": 5,
"virtual_op": 0
}nhanhoang91published a new post: nguoi-xac-thuc-du-lieu2021/09/22 06:26:12
nhanhoang91published a new post: nguoi-xac-thuc-du-lieu
2021/09/22 06:26:12
| author | nhanhoang91 |
| body | <p>Cách trả lời thủ công các yêu cầu dữ liệu hoặc chạy Trình xác thực với việc triển khai testnet của Flux trên NEAR</p> <h2>Điều kiện tiên quyết</h2> <ul> <li>Bạn muốn cung cấp câu trả lời cho các yêu cầu dữ liệu trên Flux Oracle (và kiếm mã thông báo khi mainnet khởi chạy!)</li> <li>Bạn cảm thấy thoải mái với dòng lệnh, GitHub và ví tiền điện tử</li> <li>Bạn xác nhận đây là <strong>phiên bản testnet</strong> nhằm mục đích hiển thị một số tính năng của mạng chính và không có tiền thực nào được trao đổi</li> </ul> <h2>Thiết lập tài khoản</h2> <p>Nếu bạn chưa triển khai hợp đồng trên NEAR, hãy làm theo hướng dẫn tại đây để thiết lập tài khoản testnet và NEAR CLI, nhưng đừng lo lắng về việc cài đặt môi trường Rust (vì bạn không bắt buộc phải viết bất kỳ hợp đồng thông minh nào để làm người xác nhận).</p> <p>Đăng nhập vào Oracle Explorer và đăng nhập vào ví của bạn ở góc trên cùng bên phải. Khi tài khoản testnet của bạn được hiển thị ở trên cùng, bạn có thể nhận thấy rằng bạn không có wNEAR trong tài khoản của mình. Bạn có thể thêm một số bằng cách gói NEAR bằng cách sử dụng các lệnh sau trong thiết bị đầu cuối của bạn:</p> <p> </p> <ol> <li><em>near call v2.wnear.flux-dev storage_deposit '{"account_id": "YOUR_TESTNET_ACCOUNT_ID"}' --accountId YOUR_TESTNET_ACCOUNT_ID --amount 0.00125 --gas=300000000000000</em></li> <li><em>near call v2.wnear.flux-dev near_deposit "{}" --accountId YOUR_TESTNET_ACCOUNT_ID --amount 20 --gas=300000000000000</em></li> </ol> <p> </p> <p>Bây giờ, bạn sẽ có thể thấy số tiền wNEAR mà bạn đã gói từ NEAR trong tài khoản của mình.</p> <h2>Xác thực các yêu cầu bằng Oracle Explorer</h2> <a href="https://imgbox.com/o4prSYQK" target="_blank"><img src="https://images2.imgbox.com/fe/e6/o4prSYQK_o.png" alt="image host"/></a> <p>Cuộn xuống trình điều hướng và xem danh sách các yêu cầu đã được thực hiện. Chọn một trong những cái gần đây. Nó sẽ đưa bạn đến màn hình yêu cầu, nơi bạn có thể xem yêu cầu chi tiết hơn.</p> <a href="https://imgbox.com/KBrU7vgm" target="_blank"><img src="https://images2.imgbox.com/cc/28/KBrU7vgm_o.png" alt="image host"/></a> <p>Tìm kích thước trái phiếu trong vòng mới nhất hoặc cửa sổ phân giải. Đây là điều cần thiết để đưa ra kết quả cuối cùng là giải pháp. Đối với các yêu cầu đòi hỏi nhiều bảo mật tài chính, mối quan hệ có thể được nâng lên để ngăn chặn những kẻ xấu có thể thao túng dữ liệu để khai thác hệ thống.</p> <p>Để tham gia vào quá trình xác thực yêu cầu, hãy cuộn trở lại trên cùng và nhấn nút đặt cược để đặt cược wNEAR của bạn vào những gì bạn tin là kết quả hoặc chỉ cần sao chép câu trả lời của người khác và đăng phần còn lại của wNEAR cần thiết để lấp đầy mối quan hệ . Nếu cửa sổ giải quyết đóng lại và không có ai tranh chấp câu trả lời đã đặt của bạn, bạn có thể nhấn vào nút hoàn tất và nhận wNEAR có thưởng!</p> <p>Để tìm hiểu thêm về cách Yêu cầu dữ liệu đi qua Oracle, hãy xem phần Yêu cầu dữ liệu của tài liệu.</p> <h2>Xác thực các yêu cầu bằng Validator Node</h2> <p>Oracle Validator Node được thiết lập để tự động cung cấp câu trả lời cho các yêu cầu API đi vào Flux Oracle. Nếu bạn có vốn và muốn kiếm thu nhập thụ động với nó, hãy thử!</p> <p>Nút sẽ lắng nghe bất kỳ yêu cầu nào đến với nhà tiên tri. Nếu có một yêu cầu API hợp lệ, nút sẽ gọi API <em>end_point</em> và trích xuất kết quả từ <em>source_path</em></p> <p>Sao chép kho lưu trữ Oracle Validator Node và thiết lập tệp <em>.env</em> của bạn trong thư mục như sau:</p> <a href="https://imgbox.com/mq6tcl3P" target="_blank"><img src="https://images2.imgbox.com/26/28/mq6tcl3P_o.png" alt="image host"/></a> <p><em>NEAR_MAX_STAKE_AMOUNT</em> là số tiền wNEAR tối đa bạn muốn đăng đối với trái phiếu cho một kết quả cụ thể trong mỗi cửa sổ giải quyết cho một yêu cầu nhất định. Nếu trái phiếu nhỏ hơn số tiền bạn đã đặt, bạn sẽ chỉ đăng số tiền trái phiếu.</p> <p><em>Nó sẽ không hoạt động nếu bạn không nhập đường dẫn thích hợp đến thư mục .near-credentials và thay thế YOUR_TESTNET_ACCOUNT_ID bằng id tài khoản testnet của bạn.</em></p> <p>Đầu tiên hãy cài đặt các gói, sau đó khởi động trình xác thực bằng các lệnh sau</p> <a href="https://imgbox.com/xBwZSBOg" target="_blank"><img src="https://images2.imgbox.com/a6/90/xBwZSBOg_o.png" alt="image host"/></a> <p>Bạn sẽ có thể xem một số kết quả đầu ra về những yêu cầu mà trình xác thực của bạn đang đặt và cung cấp kết quả từ thiết bị đầu cuối của bạn và bạn có thể kiểm tra hoạt động của nó trong Oracle Explorer.</p> |
| json metadata | {"tags":["blockchain","fluxprotocol","oracles","fluxvietnam"],"image":["https://images2.imgbox.com/fe/e6/o4prSYQK_o.png","https://images2.imgbox.com/cc/28/KBrU7vgm_o.png","https://images2.imgbox.com/26/28/mq6tcl3P_o.png","https://images2.imgbox.com/a6/90/xBwZSBOg_o.png"],"links":["https://imgbox.com/o4prSYQK","https://imgbox.com/KBrU7vgm","https://imgbox.com/mq6tcl3P","https://imgbox.com/xBwZSBOg"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | nguoi-xac-thuc-du-lieu |
| title | Người Xác Thực Dữ Liệu |
| Transaction Info | Block #57466286/Trx 456453892447d1bce2800decab21bc229b337954 |
View Raw JSON Data
{
"block": 57466286,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<p>Cách trả lời thủ công các yêu cầu dữ liệu hoặc chạy Trình xác thực với việc triển khai testnet của Flux trên NEAR</p>\n<h2>Điều kiện tiên quyết</h2>\n<ul>\n<li>Bạn muốn cung cấp câu trả lời cho các yêu cầu dữ liệu trên Flux Oracle (và kiếm mã thông báo khi mainnet khởi chạy!)</li>\n<li>Bạn cảm thấy thoải mái với dòng lệnh, GitHub và ví tiền điện tử</li>\n<li>Bạn xác nhận đây là <strong>phiên bản testnet</strong> nhằm mục đích hiển thị một số tính năng của mạng chính và không có tiền thực nào được trao đổi</li>\n</ul>\n<h2>Thiết lập tài khoản</h2>\n<p>Nếu bạn chưa triển khai hợp đồng trên NEAR, hãy làm theo hướng dẫn tại đây để thiết lập tài khoản testnet và NEAR CLI, nhưng đừng lo lắng về việc cài đặt môi trường Rust (vì bạn không bắt buộc phải viết bất kỳ hợp đồng thông minh nào để làm người xác nhận).</p>\n<p>Đăng nhập vào Oracle Explorer và đăng nhập vào ví của bạn ở góc trên cùng bên phải. Khi tài khoản testnet của bạn được hiển thị ở trên cùng, bạn có thể nhận thấy rằng bạn không có wNEAR trong tài khoản của mình. Bạn có thể thêm một số bằng cách gói NEAR bằng cách sử dụng các lệnh sau trong thiết bị đầu cuối của bạn:</p>\n<p> </p>\n<ol>\n<li><em>near call v2.wnear.flux-dev storage_deposit '{\"account_id\": \"YOUR_TESTNET_ACCOUNT_ID\"}' --accountId YOUR_TESTNET_ACCOUNT_ID --amount 0.00125 --gas=300000000000000</em></li>\n<li><em>near call v2.wnear.flux-dev near_deposit \"{}\" --accountId YOUR_TESTNET_ACCOUNT_ID --amount 20 --gas=300000000000000</em></li>\n</ol>\n<p> </p>\n<p>Bây giờ, bạn sẽ có thể thấy số tiền wNEAR mà bạn đã gói từ NEAR trong tài khoản của mình.</p>\n<h2>Xác thực các yêu cầu bằng Oracle Explorer</h2>\n<a href=\"https://imgbox.com/o4prSYQK\" target=\"_blank\"><img src=\"https://images2.imgbox.com/fe/e6/o4prSYQK_o.png\" alt=\"image host\"/></a>\n<p>Cuộn xuống trình điều hướng và xem danh sách các yêu cầu đã được thực hiện. Chọn một trong những cái gần đây. Nó sẽ đưa bạn đến màn hình yêu cầu, nơi bạn có thể xem yêu cầu chi tiết hơn.</p>\n<a href=\"https://imgbox.com/KBrU7vgm\" target=\"_blank\"><img src=\"https://images2.imgbox.com/cc/28/KBrU7vgm_o.png\" alt=\"image host\"/></a>\n<p>Tìm kích thước trái phiếu trong vòng mới nhất hoặc cửa sổ phân giải. Đây là điều cần thiết để đưa ra kết quả cuối cùng là giải pháp. Đối với các yêu cầu đòi hỏi nhiều bảo mật tài chính, mối quan hệ có thể được nâng lên để ngăn chặn những kẻ xấu có thể thao túng dữ liệu để khai thác hệ thống.</p>\n<p>Để tham gia vào quá trình xác thực yêu cầu, hãy cuộn trở lại trên cùng và nhấn nút đặt cược để đặt cược wNEAR của bạn vào những gì bạn tin là kết quả hoặc chỉ cần sao chép câu trả lời của người khác và đăng phần còn lại của wNEAR cần thiết để lấp đầy mối quan hệ . Nếu cửa sổ giải quyết đóng lại và không có ai tranh chấp câu trả lời đã đặt của bạn, bạn có thể nhấn vào nút hoàn tất và nhận wNEAR có thưởng!</p>\n<p>Để tìm hiểu thêm về cách Yêu cầu dữ liệu đi qua Oracle, hãy xem phần Yêu cầu dữ liệu của tài liệu.</p>\n<h2>Xác thực các yêu cầu bằng Validator Node</h2>\n<p>Oracle Validator Node được thiết lập để tự động cung cấp câu trả lời cho các yêu cầu API đi vào Flux Oracle. Nếu bạn có vốn và muốn kiếm thu nhập thụ động với nó, hãy thử!</p>\n<p>Nút sẽ lắng nghe bất kỳ yêu cầu nào đến với nhà tiên tri. Nếu có một yêu cầu API hợp lệ, nút sẽ gọi API <em>end_point</em> và trích xuất kết quả từ <em>source_path</em></p>\n<p>Sao chép kho lưu trữ Oracle Validator Node và thiết lập tệp <em>.env</em> của bạn trong thư mục như sau:</p>\n<a href=\"https://imgbox.com/mq6tcl3P\" target=\"_blank\"><img src=\"https://images2.imgbox.com/26/28/mq6tcl3P_o.png\" alt=\"image host\"/></a>\n<p><em>NEAR_MAX_STAKE_AMOUNT</em> là số tiền wNEAR tối đa bạn muốn đăng đối với trái phiếu cho một kết quả cụ thể trong mỗi cửa sổ giải quyết cho một yêu cầu nhất định. Nếu trái phiếu nhỏ hơn số tiền bạn đã đặt, bạn sẽ chỉ đăng số tiền trái phiếu.</p>\n<p><em>Nó sẽ không hoạt động nếu bạn không nhập đường dẫn thích hợp đến thư mục .near-credentials và thay thế YOUR_TESTNET_ACCOUNT_ID bằng id tài khoản testnet của bạn.</em></p>\n<p>Đầu tiên hãy cài đặt các gói, sau đó khởi động trình xác thực bằng các lệnh sau</p>\n<a href=\"https://imgbox.com/xBwZSBOg\" target=\"_blank\"><img src=\"https://images2.imgbox.com/a6/90/xBwZSBOg_o.png\" alt=\"image host\"/></a>\n<p>Bạn sẽ có thể xem một số kết quả đầu ra về những yêu cầu mà trình xác thực của bạn đang đặt và cung cấp kết quả từ thiết bị đầu cuối của bạn và bạn có thể kiểm tra hoạt động của nó trong Oracle Explorer.</p>",
"json_metadata": "{\"tags\":[\"blockchain\",\"fluxprotocol\",\"oracles\",\"fluxvietnam\"],\"image\":[\"https://images2.imgbox.com/fe/e6/o4prSYQK_o.png\",\"https://images2.imgbox.com/cc/28/KBrU7vgm_o.png\",\"https://images2.imgbox.com/26/28/mq6tcl3P_o.png\",\"https://images2.imgbox.com/a6/90/xBwZSBOg_o.png\"],\"links\":[\"https://imgbox.com/o4prSYQK\",\"https://imgbox.com/KBrU7vgm\",\"https://imgbox.com/mq6tcl3P\",\"https://imgbox.com/xBwZSBOg\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "nguoi-xac-thuc-du-lieu",
"title": "Người Xác Thực Dữ Liệu"
}
],
"op_in_trx": 0,
"timestamp": "2021-09-22T06:26:12",
"trx_id": "456453892447d1bce2800decab21bc229b337954",
"trx_in_block": 0,
"virtual_op": 0
}2021/09/16 04:07:18
2021/09/16 04:07:18
| author | nhanhoang91 |
| permlink | things-you-need-to-know-about-the-first-oracle-project-on-near-flux-protocol |
| voter | sqube |
| weight | 25 (0.25%) |
| Transaction Info | Block #57291908/Trx 8bd2c1230a533e3357f06d45827364f1e1c070cc |
View Raw JSON Data
{
"block": 57291908,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "things-you-need-to-know-about-the-first-oracle-project-on-near-flux-protocol",
"voter": "sqube",
"weight": 25
}
],
"op_in_trx": 0,
"timestamp": "2021-09-16T04:07:18",
"trx_id": "8bd2c1230a533e3357f06d45827364f1e1c070cc",
"trx_in_block": 7,
"virtual_op": 0
}nhanhoang91published a new post: things-you-need-to-know-about-the-first-oracle-project-on-near-flux-protocol2021/09/16 04:07:12
nhanhoang91published a new post: things-you-need-to-know-about-the-first-oracle-project-on-near-flux-protocol
2021/09/16 04:07:12
| author | nhanhoang91 |
| body | <h1><a href="https://www.fluxprotocol.org/">FLUX PROTOCOL</a> - THINGS YOU NEED TO KNOW ABOUT THE FIRST ORACLE PROJECT ON NEAR</h1> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/40/7a/gAsjuERA_o.jpg" alt="image host"/></a> <p>Flux Protocol is a blockchain agnostic oracle platform built on NEAR that helps to bring off-chain data to on-chain. It is also known as layer 2 of blockchain infrastructure. More clearly, it provides real data for applications to index, query, and verify or directly bring it to dApps for usage. At the time of this article, Flux has more than 10,000 SDKs and provides data for more than 10 projects such as Pulse Prediction Market and Stake GG. Furthermore, more than 1,000 crypto fields can leverage the project’s oracle.</p> <h1>How it works?</h1> <p>Like other oracles project, Flux Protocol mission is to bring off-chain data on to blockchain through validators. Specifically, validators need to collateralize their assets to make sure that every off-chain data they bring to on-chain is reliable. In contrast, they will be disputed through the voting system and lose their collateral in case they provide wrong data. Although there are other oracles already on NEAR like Chainlink and Band Protocol, nevertheless, they have not been launched mainnet yet on NEAR. Flux Protocol, hence, becomes the most important oracle on NEAR’s ecosystem.</p> <h1>Flux Protocol advantages</h1> <p>Flux Protocol has many advantages comparing with other oracle projects out there. Flux dramatically reduces the time and effort required to build applications that require complex off-chain and on-chain data thanks to its user-friendly SDK that only take three lines of code to connect. An illustration of this is ‘Oracle aggregator’ feature, which can help users to connect major oracles across crypto into one place with economic guarantees. It also has diversity dispute mechanism with staking, voting and statistical measure. This will significantly increase the quality of final output which is the most important thing of an oracle. The selective process of data source is also used to decide whether an oracle project worth a try or not. In particular, data source is the combination of everything such as human sources or smart contract or it can be everything. Therefore, unlike the others, Flux Protocol uses all three possible data sources, which are human, API and oracles to retrieve reliable outcome and not miss any vital data.</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/1a/84/Xi2cUBYc_o.png" alt="image host"/></a> <h1>Roadmap</h1> <p>The first phase of the project focused on the development and completion of the Mainnet beta including the completion of the Flux SDK, the Flux Open-Source App, and the Flux Index Node. The other tasks such as Deploying Flux Protocol V0.5 on Mainnet; Flux Index Node Deployment; Bridge DAI from Ethereum to NEAR etc… have been completed in 2020. In Phase two, the project starts to allow other projects to use its product in protocol/dApps. The specific steps in the roadmap are as follows: Deployment of Flux Protocol V1 on Mainnet - Flux Oracle Deployment, Implement Flux Governance Contracts, Bringing Beta programs to the mainnet, Quantstamp Security audits all contracts, Flux Token Deployment. All of these steps will be gradually completed in this year before the project goes to phase three, which is more about the work of putting control of the protocol in the hands of users, implementing decentralization of the protocol.</p> <a href="https://www.fluxprotocol.org/" target="_blank"><img src="https://images2.imgbox.com/60/91/GrxbBCez_o.jpg" alt="image host"/></a> <p>To conclude, along with NEAR, Flux Protocol is also backed by Coinbase Ventures, this says how important the project is in NEAR’s ecosystem. With clearly roadmap and innovative technology, Flux Protocol is expected to be the next game-changing project in blockchain open market.</p> |
| json metadata | {"tags":["fluxprotocol","oracles","nearprotocol","blockchaindata","crypto"],"image":["https://images2.imgbox.com/40/7a/gAsjuERA_o.jpg","https://images2.imgbox.com/1a/84/Xi2cUBYc_o.png","https://images2.imgbox.com/60/91/GrxbBCez_o.jpg"],"links":["https://www.fluxprotocol.org/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | fluxprotocol |
| permlink | things-you-need-to-know-about-the-first-oracle-project-on-near-flux-protocol |
| title | THINGS YOU NEED TO KNOW ABOUT THE FIRST ORACLE PROJECT ON NEAR - FLUX PROTOCOL |
| Transaction Info | Block #57291906/Trx 7951bd1c33afa4f5ba53ccf0ea80b49d3d0160fb |
View Raw JSON Data
{
"block": 57291906,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<h1><a href=\"https://www.fluxprotocol.org/\">FLUX PROTOCOL</a> - THINGS YOU NEED TO KNOW ABOUT THE FIRST ORACLE PROJECT ON NEAR</h1>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/40/7a/gAsjuERA_o.jpg\" alt=\"image host\"/></a>\n<p>Flux Protocol is a blockchain agnostic oracle platform built on NEAR that helps to bring off-chain data to on-chain. It is also known as layer 2 of blockchain infrastructure. More clearly, it provides real data for applications to index, query, and verify or directly bring it to dApps for usage. At the time of this article, Flux has more than 10,000 SDKs and provides data for more than 10 projects such as Pulse Prediction Market and Stake GG. Furthermore, more than 1,000 crypto fields can leverage the project’s oracle.</p>\n<h1>How it works?</h1>\n<p>Like other oracles project, Flux Protocol mission is to bring off-chain data on to blockchain through validators. Specifically, validators need to collateralize their assets to make sure that every off-chain data they bring to on-chain is reliable. In contrast, they will be disputed through the voting system and lose their collateral in case they provide wrong data. Although there are other oracles already on NEAR like Chainlink and Band Protocol, nevertheless, they have not been launched mainnet yet on NEAR. Flux Protocol, hence, becomes the most important oracle on NEAR’s ecosystem.</p>\n<h1>Flux Protocol advantages</h1>\n<p>Flux Protocol has many advantages comparing with other oracle projects out there. Flux dramatically reduces the time and effort required to build applications that require complex off-chain and on-chain data thanks to its user-friendly SDK that only take three lines of code to connect. An illustration of this is ‘Oracle aggregator’ feature, which can help users to connect major oracles across crypto into one place with economic guarantees. It also has diversity dispute mechanism with staking, voting and statistical measure. This will significantly increase the quality of final output which is the most important thing of an oracle. The selective process of data source is also used to decide whether an oracle project worth a try or not. In particular, data source is the combination of everything such as human sources or smart contract or it can be everything. Therefore, unlike the others, Flux Protocol uses all three possible data sources, which are human, API and oracles to retrieve reliable outcome and not miss any vital data.</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/1a/84/Xi2cUBYc_o.png\" alt=\"image host\"/></a>\n<h1>Roadmap</h1>\n<p>The first phase of the project focused on the development and completion of the Mainnet beta including the completion of the Flux SDK, the Flux Open-Source App, and the Flux Index Node. The other tasks such as Deploying Flux Protocol V0.5 on Mainnet; Flux Index Node Deployment; Bridge DAI from Ethereum to NEAR etc… have been completed in 2020. In Phase two, the project starts to allow other projects to use its product in protocol/dApps. The specific steps in the roadmap are as follows: Deployment of Flux Protocol V1 on Mainnet - Flux Oracle Deployment, Implement Flux Governance Contracts, Bringing Beta programs to the mainnet, Quantstamp Security audits all contracts, Flux Token Deployment. All of these steps will be gradually completed in this year before the project goes to phase three, which is more about the work of putting control of the protocol in the hands of users, implementing decentralization of the protocol.</p>\n<a href=\"https://www.fluxprotocol.org/\" target=\"_blank\"><img src=\"https://images2.imgbox.com/60/91/GrxbBCez_o.jpg\" alt=\"image host\"/></a>\n<p>To conclude, along with NEAR, Flux Protocol is also backed by Coinbase Ventures, this says how important the project is in NEAR’s ecosystem. With clearly roadmap and innovative technology, Flux Protocol is expected to be the next game-changing project in blockchain open market.</p>",
"json_metadata": "{\"tags\":[\"fluxprotocol\",\"oracles\",\"nearprotocol\",\"blockchaindata\",\"crypto\"],\"image\":[\"https://images2.imgbox.com/40/7a/gAsjuERA_o.jpg\",\"https://images2.imgbox.com/1a/84/Xi2cUBYc_o.png\",\"https://images2.imgbox.com/60/91/GrxbBCez_o.jpg\"],\"links\":[\"https://www.fluxprotocol.org/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "fluxprotocol",
"permlink": "things-you-need-to-know-about-the-first-oracle-project-on-near-flux-protocol",
"title": "THINGS YOU NEED TO KNOW ABOUT THE FIRST ORACLE PROJECT ON NEAR - FLUX PROTOCOL"
}
],
"op_in_trx": 0,
"timestamp": "2021-09-16T04:07:12",
"trx_id": "7951bd1c33afa4f5ba53ccf0ea80b49d3d0160fb",
"trx_in_block": 4,
"virtual_op": 0
}steemdelegated 17.068 SP to @nhanhoang912021/09/15 07:47:42
steemdelegated 17.068 SP to @nhanhoang91
2021/09/15 07:47:42
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 27757.220648 VESTS |
| Transaction Info | Block #57267733/Trx 02bc76f8f4dcc75081128f1ec6601c362e6908d6 |
View Raw JSON Data
{
"block": 57267733,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "27757.220648 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2021-09-15T07:47:42",
"trx_id": "02bc76f8f4dcc75081128f1ec6601c362e6908d6",
"trx_in_block": 3,
"virtual_op": 0
}squbeupvoted (0.25%) @nhanhoang91 / flux-co-so-ha-tang-meta-oracle-de-bao-mat-nen-kinh-te-web32021/09/15 06:00:48
squbeupvoted (0.25%) @nhanhoang91 / flux-co-so-ha-tang-meta-oracle-de-bao-mat-nen-kinh-te-web3
2021/09/15 06:00:48
| author | nhanhoang91 |
| permlink | flux-co-so-ha-tang-meta-oracle-de-bao-mat-nen-kinh-te-web3 |
| voter | sqube |
| weight | 25 (0.25%) |
| Transaction Info | Block #57265609/Trx 524cdd3f210c174945807b72414df079aeea7b00 |
View Raw JSON Data
{
"block": 57265609,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "flux-co-so-ha-tang-meta-oracle-de-bao-mat-nen-kinh-te-web3",
"voter": "sqube",
"weight": 25
}
],
"op_in_trx": 0,
"timestamp": "2021-09-15T06:00:48",
"trx_id": "524cdd3f210c174945807b72414df079aeea7b00",
"trx_in_block": 5,
"virtual_op": 0
}nhanhoang91published a new post: flux-co-so-ha-tang-meta-oracle-de-bao-mat-nen-kinh-te-web32021/09/15 06:00:42
nhanhoang91published a new post: flux-co-so-ha-tang-meta-oracle-de-bao-mat-nen-kinh-te-web3
2021/09/15 06:00:42
| author | nhanhoang91 |
| body | <p><strong>Flux: Cơ sở hạ tầng Meta-Oracle để bảo mật nền kinh tế Web3</strong></p> <a href="https://imgbox.com/tyX3dMCy" target="_blank"><img src="https://images2.imgbox.com/34/b7/tyX3dMCy_o.png" alt="image host"/></a> <p>Sự bùng nổ gần đây của Tài chính phi tập trung (DeFi) đã nâng cao sự tương tác của các sự kiện trong thế giới thực và công nghệ blockchain biến nó từ những trò đùa kỳ lạ thành các thành phần quan trọng. Khi sự thèm muốn của các cơ sở truyền thống trong việc tận dụng công nghệ này tiếp tục phát triển, thì nhu cầu về cơ sở hạ tầng cho phép họ kết nối dữ liệu thế giới thực vào blockchain một cách an toàn.</p> <p> </p> <p>Đối với tất cả các thành phần được gắn từ "thông minh" vào tên của nó, hợp đồng thông minh không sở hữu trí thông minh cũng như khả năng phân biệt những gì đang ở ngay trước mặt chúng. Thay vào đó, sự khéo léo được nhận thức của nó nằm ở khả năng tự động thực hiện trao đổi giá trị mà không cần bất kỳ sự tương tác nào của bên thứ ba. Mặc dù vậy, không thể phủ nhận những phát triển thú vị và cơ hội mà hợp đồng thông minh mang lại, đặt nền móng cho một mô hình kinh tế mới. Hợp đồng thông minh đã giảm đáng kể rủi ro của các bên đối tác, cải thiện hiệu quả, giảm chi phí nhân lực và loại bỏ sự mờ mịt trong việc trao đổi các giá trị tài chính.</p> <p> </p> <p>Vì các hợp đồng thông minh không biết đến các sự kiện trong thế giới thực, nên cần phải kết nối chúng với cơ sở hạ tầng có thể cung cấp thông tin bên ngoài mà chúng yêu cầu. Cơ sở hạ tầng này, có thể truy vấn, truy xuất và xác minh các nguồn dữ liệu bên ngoài cho dữ liệu được chỉ định, được gọi là Oracle.</p> <h1>Vấn đề Oracle</h1> <p>Giống như tên gọi của nó từ thần thoại Hy Lạp, Oracles cung cấp các hợp đồng thông minh với thông tin bằng cách quan sát bên ngoài bức màn và tìm nạp dữ liệu cần thiết từ thế giới thực thông qua các API web và nguồn cấp dữ liệu. Thông qua oracles, các hợp đồng thông minh có thể “nhìn thấy” thế giới xung quanh chúng, mang lại sự tương tác dữ liệu trong thế giới thực trên chuỗi. Tuy nhiên, điều này đưa ra một vấn đề mới; với khả năng làm cho các hợp đồng thông minh nhìn thấy thế giới xung quanh chúng, các oracles có ảnh hưởng đáng kể đến những gì mà hợp đồng xử lý, một ảnh hưởng làm mất hiệu lực hoạt động nếu bị xâm phạm - bất kể quy mô.</p> <p>Khả năng vốn có của các oracles trong việc giao tiếp giữa dữ liệu ngoài chuỗi và dữ liệu trên chuỗi là chất xúc tác cho tiện ích trong thế giới thực của công nghệ blockchain. Tuy nhiên, điểm thất bại duy nhất được đưa ra bởi sự phụ thuộc vào các nguồn tập trung và sự ủy quyền của bên thứ ba tiếp tục làm suy yếu việc áp dụng nó.</p> <p><strong>Giải quyết nút thắt cổ chai này là những gì chúng tôi đang xây dựng tại Flux Protocol</strong></p> <h1>Dữ liệu được mô phỏng lại</h1> <p><a href="https://www.fluxprotocol.org/">Flux Oracle</a> là xương sống của một cơ sở hạ tầng hoàn toàn không được phép và phi tập trung để làm việc và giải quyết dữ liệu ngoài chuỗi trên blockchain. Oracle này đã được thiết kế độc đáo để linh hoạt mà không cần đánh đổi bảo mật trong khi đủ mạnh để mở rộng quy mô với sự đảm bảo kinh tế.</p> <p>Các yêu cầu dữ liệu được gửi qua mạng được xác thực và giải quyết bởi những người xác thực phải đưa vào tài sản thế chấp trong tài sản gốc của mạng để đồng thời bảo mật mạng đồng thời gây khó khăn cho các tác nhân độc hại làm hỏng yêu cầu dữ liệu. Cơ chế này có tương quan tỷ lệ với Giao thức Tổng giá trị được đảm bảo (TVS), khuyến khích các trình xác thực giải quyết các yêu cầu dữ liệu một cách trung thực và không cho phép các tác nhân độc hại giải quyết các kết quả không chính xác. Khi yêu cầu dữ liệu cần được giải quyết, người xác thực đặt cược vào mã thông báo của mạng để kiếm phí yêu cầu dữ liệu được đề cập. Nếu có nhiều giá trị hơn được bảo đảm bởi giao thức, người xác thực sẽ được thưởng từ phí yêu cầu dữ liệu tăng lên. Khi ít dữ liệu được bảo mật hơn, phí sẽ giảm xuống để ngăn chặn các tác nhân độc hại vì giá trị thu được ít hơn, khuyến khích các nhà cung cấp yêu cầu dữ liệu tận dụng Oracle với giá rẻ.</p> <p>Cơ chế đảm bảo kinh tế dựa trên mô hình phí yêu cầu dữ liệu biến động tăng hoặc giảm theo lượng giá trị bị khóa trong giao thức. Làm điều này đảm bảo rằng các trình xác thực được khuyến khích một cách tương xứng để giải quyết các kết quả dữ liệu một cách chính xác.</p> <p>Tuy nhiên, các biện pháp khuyến khích kinh tế có thể không phải là một biện pháp răn đe đủ tốt - một số người chỉ đơn giản là muốn phá hoại bất chấp điều gì xảy ra. Đây là lý do tại sao đảm bảo kinh tế được khen ngợi bởi một giai đoạn thử thách và một quá trình giải quyết. Đối với mọi yêu cầu dữ liệu, người dùng có thể tùy chỉnh khoảng thời gian thử thách kết quả do Oracle tìm nạp. Trình xác thực giám sát tất cả các yêu cầu dữ liệu, một quy trình có thể hoàn toàn tự động để xác thực các nguồn và giải quyết các yêu cầu. Nếu phản hồi dữ liệu không chính xác được phát hiện, phản hồi có thể bị thách thức. Để làm như vậy, trình xác thực đặt mã thông báo của họ vào kết quả mà họ cho là đúng theo dữ liệu API từ phản hồi của chính họ.</p> <p><a href="https://www.fluxprotocol.org/">Flux Oracle</a> không chỉ có khả năng xử lý, giải quyết và hoàn thiện dữ liệu trong thế giới thực cho thị trường mở mà còn có thể được sử dụng bởi các giao thức khác để tổng hợp dữ liệu cho các nhu cầu tùy chỉnh của họ, mở ra nút thắt cổ chai trong khu vườn có tường bao quanh tiềm năng của blockchain.</p> <ul> <li>Tìm hiểu thêm về chúng tôi trên <a href="https://www.fluxprotocol.org/">trang web của chúng tôi</a></li> <li>Đọc về sự phát triển của chúng tôi <a href="https://fluxprotocol.medium.com/">ở đây</a></li> <li>Tham gia cuộc thảo luận trên kênh truyền thông xã hội của chúng tôi trên <a href="https://discord.gg/prZkrT89">Discord</a>, <a href="https://twitter.com/fluxprotocol">Twitter</a> và <a href="https://t.me/fluxprotocol">Telegram</a></li> <li><a href="https://github.com/fluxprotocol">Phát triển</a> cùng chúng tôi</li> </ul> <p><strong> </strong></p> |
| json metadata | {"tags":["blockchain","fluxprotocol","fluxvietnam","ethereum","oracles"],"image":["https://images2.imgbox.com/34/b7/tyX3dMCy_o.png"],"links":["https://imgbox.com/tyX3dMCy","https://www.fluxprotocol.org/","https://fluxprotocol.medium.com/","https://discord.gg/prZkrT89","https://twitter.com/fluxprotocol","https://t.me/fluxprotocol","https://github.com/fluxprotocol"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | flux-co-so-ha-tang-meta-oracle-de-bao-mat-nen-kinh-te-web3 |
| title | Flux: Cơ sở hạ tầng Meta-Oracle để bảo mật nền kinh tế Web3 |
| Transaction Info | Block #57265607/Trx f85cbf18dddc6b73565980aa93b2e0693cf9906b |
View Raw JSON Data
{
"block": 57265607,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<p><strong>Flux: Cơ sở hạ tầng Meta-Oracle để bảo mật nền kinh tế Web3</strong></p>\n\n<a href=\"https://imgbox.com/tyX3dMCy\" target=\"_blank\"><img src=\"https://images2.imgbox.com/34/b7/tyX3dMCy_o.png\" alt=\"image host\"/></a>\n\n<p>Sự bùng nổ gần đây của Tài chính phi tập trung (DeFi) đã nâng cao sự tương tác của các sự kiện trong thế giới thực và công nghệ blockchain biến nó từ những trò đùa kỳ lạ thành các thành phần quan trọng. Khi sự thèm muốn của các cơ sở truyền thống trong việc tận dụng công nghệ này tiếp tục phát triển, thì nhu cầu về cơ sở hạ tầng cho phép họ kết nối dữ liệu thế giới thực vào blockchain một cách an toàn.</p>\n<p> </p>\n<p>Đối với tất cả các thành phần được gắn từ \"thông minh\" vào tên của nó, hợp đồng thông minh không sở hữu trí thông minh cũng như khả năng phân biệt những gì đang ở ngay trước mặt chúng. Thay vào đó, sự khéo léo được nhận thức của nó nằm ở khả năng tự động thực hiện trao đổi giá trị mà không cần bất kỳ sự tương tác nào của bên thứ ba. Mặc dù vậy, không thể phủ nhận những phát triển thú vị và cơ hội mà hợp đồng thông minh mang lại, đặt nền móng cho một mô hình kinh tế mới. Hợp đồng thông minh đã giảm đáng kể rủi ro của các bên đối tác, cải thiện hiệu quả, giảm chi phí nhân lực và loại bỏ sự mờ mịt trong việc trao đổi các giá trị tài chính.</p>\n<p> </p>\n<p>Vì các hợp đồng thông minh không biết đến các sự kiện trong thế giới thực, nên cần phải kết nối chúng với cơ sở hạ tầng có thể cung cấp thông tin bên ngoài mà chúng yêu cầu. Cơ sở hạ tầng này, có thể truy vấn, truy xuất và xác minh các nguồn dữ liệu bên ngoài cho dữ liệu được chỉ định, được gọi là Oracle.</p>\n<h1>Vấn đề Oracle</h1>\n<p>Giống như tên gọi của nó từ thần thoại Hy Lạp, Oracles cung cấp các hợp đồng thông minh với thông tin bằng cách quan sát bên ngoài bức màn và tìm nạp dữ liệu cần thiết từ thế giới thực thông qua các API web và nguồn cấp dữ liệu. Thông qua oracles, các hợp đồng thông minh có thể “nhìn thấy” thế giới xung quanh chúng, mang lại sự tương tác dữ liệu trong thế giới thực trên chuỗi. Tuy nhiên, điều này đưa ra một vấn đề mới; với khả năng làm cho các hợp đồng thông minh nhìn thấy thế giới xung quanh chúng, các oracles có ảnh hưởng đáng kể đến những gì mà hợp đồng xử lý, một ảnh hưởng làm mất hiệu lực hoạt động nếu bị xâm phạm - bất kể quy mô.</p>\n<p>Khả năng vốn có của các oracles trong việc giao tiếp giữa dữ liệu ngoài chuỗi và dữ liệu trên chuỗi là chất xúc tác cho tiện ích trong thế giới thực của công nghệ blockchain. Tuy nhiên, điểm thất bại duy nhất được đưa ra bởi sự phụ thuộc vào các nguồn tập trung và sự ủy quyền của bên thứ ba tiếp tục làm suy yếu việc áp dụng nó.</p>\n<p><strong>Giải quyết nút thắt cổ chai này là những gì chúng tôi đang xây dựng tại Flux Protocol</strong></p>\n<h1>Dữ liệu được mô phỏng lại</h1>\n<p><a href=\"https://www.fluxprotocol.org/\">Flux Oracle</a> là xương sống của một cơ sở hạ tầng hoàn toàn không được phép và phi tập trung để làm việc và giải quyết dữ liệu ngoài chuỗi trên blockchain. Oracle này đã được thiết kế độc đáo để linh hoạt mà không cần đánh đổi bảo mật trong khi đủ mạnh để mở rộng quy mô với sự đảm bảo kinh tế.</p>\n<p>Các yêu cầu dữ liệu được gửi qua mạng được xác thực và giải quyết bởi những người xác thực phải đưa vào tài sản thế chấp trong tài sản gốc của mạng để đồng thời bảo mật mạng đồng thời gây khó khăn cho các tác nhân độc hại làm hỏng yêu cầu dữ liệu. Cơ chế này có tương quan tỷ lệ với Giao thức Tổng giá trị được đảm bảo (TVS), khuyến khích các trình xác thực giải quyết các yêu cầu dữ liệu một cách trung thực và không cho phép các tác nhân độc hại giải quyết các kết quả không chính xác. Khi yêu cầu dữ liệu cần được giải quyết, người xác thực đặt cược vào mã thông báo của mạng để kiếm phí yêu cầu dữ liệu được đề cập. Nếu có nhiều giá trị hơn được bảo đảm bởi giao thức, người xác thực sẽ được thưởng từ phí yêu cầu dữ liệu tăng lên. Khi ít dữ liệu được bảo mật hơn, phí sẽ giảm xuống để ngăn chặn các tác nhân độc hại vì giá trị thu được ít hơn, khuyến khích các nhà cung cấp yêu cầu dữ liệu tận dụng Oracle với giá rẻ.</p>\n<p>Cơ chế đảm bảo kinh tế dựa trên mô hình phí yêu cầu dữ liệu biến động tăng hoặc giảm theo lượng giá trị bị khóa trong giao thức. Làm điều này đảm bảo rằng các trình xác thực được khuyến khích một cách tương xứng để giải quyết các kết quả dữ liệu một cách chính xác.</p>\n<p>Tuy nhiên, các biện pháp khuyến khích kinh tế có thể không phải là một biện pháp răn đe đủ tốt - một số người chỉ đơn giản là muốn phá hoại bất chấp điều gì xảy ra. Đây là lý do tại sao đảm bảo kinh tế được khen ngợi bởi một giai đoạn thử thách và một quá trình giải quyết. Đối với mọi yêu cầu dữ liệu, người dùng có thể tùy chỉnh khoảng thời gian thử thách kết quả do Oracle tìm nạp. Trình xác thực giám sát tất cả các yêu cầu dữ liệu, một quy trình có thể hoàn toàn tự động để xác thực các nguồn và giải quyết các yêu cầu. Nếu phản hồi dữ liệu không chính xác được phát hiện, phản hồi có thể bị thách thức. Để làm như vậy, trình xác thực đặt mã thông báo của họ vào kết quả mà họ cho là đúng theo dữ liệu API từ phản hồi của chính họ.</p>\n<p><a href=\"https://www.fluxprotocol.org/\">Flux Oracle</a> không chỉ có khả năng xử lý, giải quyết và hoàn thiện dữ liệu trong thế giới thực cho thị trường mở mà còn có thể được sử dụng bởi các giao thức khác để tổng hợp dữ liệu cho các nhu cầu tùy chỉnh của họ, mở ra nút thắt cổ chai trong khu vườn có tường bao quanh tiềm năng của blockchain.</p>\n<ul>\n<li>Tìm hiểu thêm về chúng tôi trên <a href=\"https://www.fluxprotocol.org/\">trang web của chúng tôi</a></li>\n<li>Đọc về sự phát triển của chúng tôi <a href=\"https://fluxprotocol.medium.com/\">ở đây</a></li>\n<li>Tham gia cuộc thảo luận trên kênh truyền thông xã hội của chúng tôi trên <a href=\"https://discord.gg/prZkrT89\">Discord</a>, <a href=\"https://twitter.com/fluxprotocol\">Twitter</a> và <a href=\"https://t.me/fluxprotocol\">Telegram</a></li>\n<li><a href=\"https://github.com/fluxprotocol\">Phát triển</a> cùng chúng tôi</li>\n</ul>\n<p><strong> </strong></p>",
"json_metadata": "{\"tags\":[\"blockchain\",\"fluxprotocol\",\"fluxvietnam\",\"ethereum\",\"oracles\"],\"image\":[\"https://images2.imgbox.com/34/b7/tyX3dMCy_o.png\"],\"links\":[\"https://imgbox.com/tyX3dMCy\",\"https://www.fluxprotocol.org/\",\"https://fluxprotocol.medium.com/\",\"https://discord.gg/prZkrT89\",\"https://twitter.com/fluxprotocol\",\"https://t.me/fluxprotocol\",\"https://github.com/fluxprotocol\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "flux-co-so-ha-tang-meta-oracle-de-bao-mat-nen-kinh-te-web3",
"title": "Flux: Cơ sở hạ tầng Meta-Oracle để bảo mật nền kinh tế Web3"
}
],
"op_in_trx": 0,
"timestamp": "2021-09-15T06:00:42",
"trx_id": "f85cbf18dddc6b73565980aa93b2e0693cf9906b",
"trx_in_block": 0,
"virtual_op": 0
}steemdelegated 5.620 SP to @nhanhoang912021/07/14 07:16:00
steemdelegated 5.620 SP to @nhanhoang91
2021/07/14 07:16:00
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 9138.892166 VESTS |
| Transaction Info | Block #55467656/Trx 2d22e523482542071860628695ffc196b04d77e2 |
View Raw JSON Data
{
"block": 55467656,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "9138.892166 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2021-07-14T07:16:00",
"trx_id": "2d22e523482542071860628695ffc196b04d77e2",
"trx_in_block": 2,
"virtual_op": 0
}steemdelegated 17.216 SP to @nhanhoang912021/06/17 03:51:57
steemdelegated 17.216 SP to @nhanhoang91
2021/06/17 03:51:57
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 27998.370350 VESTS |
| Transaction Info | Block #54697094/Trx d55616a2c271a7eb007172e8b28fe79a8620a99a |
View Raw JSON Data
{
"block": 54697094,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "27998.370350 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2021-06-17T03:51:57",
"trx_id": "d55616a2c271a7eb007172e8b28fe79a8620a99a",
"trx_in_block": 0,
"virtual_op": 0
}crypto.piotrsent 0.003 STEEM to @nhanhoang91- "Regarding the latest information and development of Steemauto. Old SteemAuto is already being switched off. Today, I would like to introduce you to new version of SteemAuto launched by one of most rep..."2021/06/12 15:55:09
crypto.piotrsent 0.003 STEEM to @nhanhoang91- "Regarding the latest information and development of Steemauto. Old SteemAuto is already being switched off. Today, I would like to introduce you to new version of SteemAuto launched by one of most rep..."
2021/06/12 15:55:09
| amount | 0.003 STEEM |
| from | crypto.piotr |
| memo | Regarding the latest information and development of Steemauto. Old SteemAuto is already being switched off. Today, I would like to introduce you to new version of SteemAuto launched by one of most reputable witness. You can find it here: https://worldofxpilar.com/dash.php . I've helped testing it and it's WORKING GREAT so far (In case if you would have any questions, consider joining their discord channel: https://discord.com/invite/VAHHsmnNaJ ) |
| to | nhanhoang91 |
| Transaction Info | Block #54568538/Trx 9fb951321a7c0d4b401ddcfebbbe5189ac81b18c |
View Raw JSON Data
{
"block": 54568538,
"op": [
"transfer",
{
"amount": "0.003 STEEM",
"from": "crypto.piotr",
"memo": "Regarding the latest information and development of Steemauto. Old SteemAuto is already being switched off. Today, I would like to introduce you to new version of SteemAuto launched by one of most reputable witness. You can find it here: https://worldofxpilar.com/dash.php . I've helped testing it and it's WORKING GREAT so far (In case if you would have any questions, consider joining their discord channel: https://discord.com/invite/VAHHsmnNaJ )",
"to": "nhanhoang91"
}
],
"op_in_trx": 0,
"timestamp": "2021-06-12T15:55:09",
"trx_id": "9fb951321a7c0d4b401ddcfebbbe5189ac81b18c",
"trx_in_block": 28,
"virtual_op": 0
}boczeratulupvoted (100.00%) @nhanhoang91 / enter-the-blockchain-world-in-just-one-tap-with-blocto2021/05/26 13:04:30
boczeratulupvoted (100.00%) @nhanhoang91 / enter-the-blockchain-world-in-just-one-tap-with-blocto
2021/05/26 13:04:30
| author | nhanhoang91 |
| permlink | enter-the-blockchain-world-in-just-one-tap-with-blocto |
| voter | boczeratul |
| weight | 10000 (100.00%) |
| Transaction Info | Block #54079198/Trx 7ae0cceb58674a58302064ffb0fa07795e25906b |
View Raw JSON Data
{
"block": 54079198,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "enter-the-blockchain-world-in-just-one-tap-with-blocto",
"voter": "boczeratul",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2021-05-26T13:04:30",
"trx_id": "7ae0cceb58674a58302064ffb0fa07795e25906b",
"trx_in_block": 5,
"virtual_op": 0
}boczeratulupvoted (100.00%) @nhanhoang91 / enter-the-blockchain-world-in-just-one-tap-with-blocto2021/05/26 13:04:24
boczeratulupvoted (100.00%) @nhanhoang91 / enter-the-blockchain-world-in-just-one-tap-with-blocto
2021/05/26 13:04:24
| author | nhanhoang91 |
| permlink | enter-the-blockchain-world-in-just-one-tap-with-blocto |
| voter | boczeratul |
| weight | 10000 (100.00%) |
| Transaction Info | Block #54079196/Trx 3228ce8bd1a7eebc3b22b9537009b1c0f17859fa |
View Raw JSON Data
{
"block": 54079196,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "enter-the-blockchain-world-in-just-one-tap-with-blocto",
"voter": "boczeratul",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2021-05-26T13:04:24",
"trx_id": "3228ce8bd1a7eebc3b22b9537009b1c0f17859fa",
"trx_in_block": 6,
"virtual_op": 0
}steemdelegated 17.332 SP to @nhanhoang912021/04/14 06:56:45
steemdelegated 17.332 SP to @nhanhoang91
2021/04/14 06:56:45
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 28185.836107 VESTS |
| Transaction Info | Block #52873179/Trx c9f05ad8f19a989492d98be4e93cea14256bc48c |
View Raw JSON Data
{
"block": 52873179,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "28185.836107 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2021-04-14T06:56:45",
"trx_id": "c9f05ad8f19a989492d98be4e93cea14256bc48c",
"trx_in_block": 6,
"virtual_op": 0
}nhanhoang91published a new post: enter-the-blockchain-world-in-just-one-tap-with-blocto2021/04/14 05:08:21
nhanhoang91published a new post: enter-the-blockchain-world-in-just-one-tap-with-blocto
2021/04/14 05:08:21
| author | nhanhoang91 |
| body | <p>Are you confused with how difficult to switch between blockchain platforms? Are you a beginner who just joined crypto and learn to use smart contract wallet but realize that it is just too difficult to use? Are you disappointed when cannot use other platforms dApp because you are not 'rich enough' to hold their native tokens? Are you tired because of losing seedphrase while using wallets like Metamask or Trustwallet? Or Are you interested in earning passive income right in your crypto wallet? Or you simply want to find something 'special' in crypto space? Then Blocto is the perfect answer for you!</p> https://cdn.steemitimages.com/DQmaHDGgiefdXqxEK6Qf86SAFTZJ7XWPfJ5PuGP6QTyJWYw/Screenshot_6.png <p> </p> <p>Why Blocto is worth to keep your eyes on while there are many other blockchains out there? Then this article will tell you why below</p> <p> </p> <ol> 1. You do not have a good memory and afraid of losing your seedphrase one day? Blocto provides <strong>seedless account management </strong>meaning that you will not worry of losing your seedphrase anymore as your crypto wallet can be accessed via your email address. It takes users experience to the new level as you can log in with any downloaded apps on your mobile phone.</li> https://cdn.steemitimages.com/DQmZV29jYhDhM1GKCd7AJBKnLd8NnxkL8Mts2v2uSKAGCAy/Screenshot_1.png </ol> <p> </p> <ol start="3"> 2. Have you ever imagined that you can <strong>manage your funds or NFTs across different blockchains</strong>? The main mission of Blocto is to enable cross-chain functionality and make Blockchain as simple as possible. Therefore, Ethereum, Tron, Flow, Solana users are now can mutually use their dApps and NFTs together as a result of Blocto's state-of-the-art and flexible blockchain design. It means that you do not need to hold other blockchain's native tokens to use theirs. This helps to save both cost and time of users, bringing more adoption to the space in general.</li> </ol> <p> </p> <ol start="3"> 3. Blockchain is good because of its transparency features. However, there are many active scammers in this space, especially in OTC and P2P market. Do not worry, Blocto also comfortably supports the process of fiat to crypto transfer for their users.</li> </ol> <p> </p> <ol start="4"> 4. You do not have enough technical knowledge to process complicated steps for mining purpose in other blockchain systems? Blocto is designed to offer you to do <strong>mining right in their wallet (dApp Mining)</strong>. Moreover, 40% supply of Blocto Token (Ticker: BLT) will be reserved to distribute to Blocto active users and developers, making them to have more motivations in keeping and accumulating BLT.</li> https://cdn.steemitimages.com/DQmb5AnWGuV7yjt5SJMDA2tZVyzmPQ6E5kdQb7jXTw8bHt8/Screenshot_8.png </ol> <p> </p> <ol start="5"> 5. You are tired of high gas fee when doing swapping on Uniswap or complicated and probably scam when buying NFTs on Opensea? <strong>Blocto Swap and Blocto Auction House </strong>are the solutions thanks to multiple blockchains interation feature. More clearly, users will be able to trade digital arts on Blocto Auction House never mind of where the tokens were issued. Regarding Blocto Swap, USD 10 million accumulated trading volume right after launch proves its potential successful in the near future.</li> </ol> <p> </p> <ol start="6"> 6. Blocto's ecosystem and products are growing day by day, hence, Blocto Token's holders are the ones who take the most advantages since BLT holders will be granted <strong>privileges to experience the Blocto-made products</strong> before everyone.</li> </ol> <p> </p> <ol start="7"> 7. How Blocto token become scarcity in the future? As the network is growing, BLT can be used to pay network fee, this will become huge revenue for the project as more and more dApps integrated into Blocto, and <strong>the scarcity of BLT is imminent.</strong></li> https://cdn.steemitimages.com/DQmQ9McmBoYc7By4GivT9JPAf7uNqK8tf2LGVKaEc3Uro5p/Screenshot_7.png </ol> <p> </p> <p>With powerful features mentioned above, Blocto will be a game changer and aims to dominate the most market share of crypto wallet market sooner or later. With dedicated works from team and current impressive developments, Blocto project is definitely worth to keep your eyes on in the industry.</p> <p><strong>Source</strong></p> <p><a href="https://blocto.portto.io/">https://blocto.portto.io/</a></p> <p><a href="https://twitter.com/BloctoApp">https://twitter.com/BloctoApp</a></p> <p><a href="https://t.me/blocto">https://t.me/blocto</a></p> <p><a href="https://blocto.portto.io/en/download/">https://blocto.portto.io/en/download/</a></p> <p> </p> |
| json metadata | {"tags":["blockchain","blocto","ethereum","bitcoin","dapp"],"image":["https://cdn.steemitimages.com/DQmaHDGgiefdXqxEK6Qf86SAFTZJ7XWPfJ5PuGP6QTyJWYw/Screenshot_6.png","https://cdn.steemitimages.com/DQmZV29jYhDhM1GKCd7AJBKnLd8NnxkL8Mts2v2uSKAGCAy/Screenshot_1.png","https://cdn.steemitimages.com/DQmb5AnWGuV7yjt5SJMDA2tZVyzmPQ6E5kdQb7jXTw8bHt8/Screenshot_8.png","https://cdn.steemitimages.com/DQmQ9McmBoYc7By4GivT9JPAf7uNqK8tf2LGVKaEc3Uro5p/Screenshot_7.png"],"links":["https://blocto.portto.io/","https://twitter.com/BloctoApp","https://t.me/blocto","https://blocto.portto.io/en/download/"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | enter-the-blockchain-world-in-just-one-tap-with-blocto |
| title | ENTER THE BLOCKCHAIN WORLD IN JUST ONE TAP WITH BLOCTO |
| Transaction Info | Block #52871031/Trx bf04f5bf71ae1c1e8298f066f5a1320866d39d69 |
View Raw JSON Data
{
"block": 52871031,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<p>Are you confused with how difficult to switch between blockchain platforms? Are you a beginner who just joined crypto and learn to use smart contract wallet but realize that it is just too difficult to use? Are you disappointed when cannot use other platforms dApp because you are not 'rich enough' to hold their native tokens? Are you tired because of losing seedphrase while using wallets like Metamask or Trustwallet? Or Are you interested in earning passive income right in your crypto wallet? Or you simply want to find something 'special' in crypto space? Then Blocto is the perfect answer for you!</p>\n\n\nhttps://cdn.steemitimages.com/DQmaHDGgiefdXqxEK6Qf86SAFTZJ7XWPfJ5PuGP6QTyJWYw/Screenshot_6.png\n\n\n<p> </p>\n<p>Why Blocto is worth to keep your eyes on while there are many other blockchains out there? Then this article will tell you why below</p>\n<p> </p>\n<ol>\n1. You do not have a good memory and afraid of losing your seedphrase one day? Blocto provides <strong>seedless account management </strong>meaning that you will not worry of losing your seedphrase anymore as your crypto wallet can be accessed via your email address. It takes users experience to the new level as you can log in with any downloaded apps on your mobile phone.</li>\n\nhttps://cdn.steemitimages.com/DQmZV29jYhDhM1GKCd7AJBKnLd8NnxkL8Mts2v2uSKAGCAy/Screenshot_1.png\n\n</ol>\n<p> </p>\n<ol start=\"3\">\n2. Have you ever imagined that you can <strong>manage your funds or NFTs across different blockchains</strong>? The main mission of Blocto is to enable cross-chain functionality and make Blockchain as simple as possible. Therefore, Ethereum, Tron, Flow, Solana users are now can mutually use their dApps and NFTs together as a result of Blocto's state-of-the-art and flexible blockchain design. It means that you do not need to hold other blockchain's native tokens to use theirs. This helps to save both cost and time of users, bringing more adoption to the space in general.</li>\n</ol>\n<p> </p>\n<ol start=\"3\">\n3. Blockchain is good because of its transparency features. However, there are many active scammers in this space, especially in OTC and P2P market. Do not worry, Blocto also comfortably supports the process of fiat to crypto transfer for their users.</li>\n</ol>\n<p> </p>\n<ol start=\"4\">\n4. You do not have enough technical knowledge to process complicated steps for mining purpose in other blockchain systems? Blocto is designed to offer you to do <strong>mining right in their wallet (dApp Mining)</strong>. Moreover, 40% supply of Blocto Token (Ticker: BLT) will be reserved to distribute to Blocto active users and developers, making them to have more motivations in keeping and accumulating BLT.</li>\n\nhttps://cdn.steemitimages.com/DQmb5AnWGuV7yjt5SJMDA2tZVyzmPQ6E5kdQb7jXTw8bHt8/Screenshot_8.png\n\n</ol>\n<p> </p>\n<ol start=\"5\">\n5. You are tired of high gas fee when doing swapping on Uniswap or complicated and probably scam when buying NFTs on Opensea? <strong>Blocto Swap and Blocto Auction House </strong>are the solutions thanks to multiple blockchains interation feature. More clearly, users will be able to trade digital arts on Blocto Auction House never mind of where the tokens were issued. Regarding Blocto Swap, USD 10 million accumulated trading volume right after launch proves its potential successful in the near future.</li>\n</ol>\n<p> </p>\n<ol start=\"6\">\n6. Blocto's ecosystem and products are growing day by day, hence, Blocto Token's holders are the ones who take the most advantages since BLT holders will be granted <strong>privileges to experience the Blocto-made products</strong> before everyone.</li>\n\n</ol>\n<p> </p>\n<ol start=\"7\">\n7. How Blocto token become scarcity in the future? As the network is growing, BLT can be used to pay network fee, this will become huge revenue for the project as more and more dApps integrated into Blocto, and <strong>the scarcity of BLT is imminent.</strong></li>\n\nhttps://cdn.steemitimages.com/DQmQ9McmBoYc7By4GivT9JPAf7uNqK8tf2LGVKaEc3Uro5p/Screenshot_7.png\n\n</ol>\n<p> </p>\n<p>With powerful features mentioned above, Blocto will be a game changer and aims to dominate the most market share of crypto wallet market sooner or later. With dedicated works from team and current impressive developments, Blocto project is definitely worth to keep your eyes on in the industry.</p>\n<p><strong>Source</strong></p>\n<p><a href=\"https://blocto.portto.io/\">https://blocto.portto.io/</a></p>\n<p><a href=\"https://twitter.com/BloctoApp\">https://twitter.com/BloctoApp</a></p>\n<p><a href=\"https://t.me/blocto\">https://t.me/blocto</a></p>\n<p><a href=\"https://blocto.portto.io/en/download/\">https://blocto.portto.io/en/download/</a></p>\n<p> </p>",
"json_metadata": "{\"tags\":[\"blockchain\",\"blocto\",\"ethereum\",\"bitcoin\",\"dapp\"],\"image\":[\"https://cdn.steemitimages.com/DQmaHDGgiefdXqxEK6Qf86SAFTZJ7XWPfJ5PuGP6QTyJWYw/Screenshot_6.png\",\"https://cdn.steemitimages.com/DQmZV29jYhDhM1GKCd7AJBKnLd8NnxkL8Mts2v2uSKAGCAy/Screenshot_1.png\",\"https://cdn.steemitimages.com/DQmb5AnWGuV7yjt5SJMDA2tZVyzmPQ6E5kdQb7jXTw8bHt8/Screenshot_8.png\",\"https://cdn.steemitimages.com/DQmQ9McmBoYc7By4GivT9JPAf7uNqK8tf2LGVKaEc3Uro5p/Screenshot_7.png\"],\"links\":[\"https://blocto.portto.io/\",\"https://twitter.com/BloctoApp\",\"https://t.me/blocto\",\"https://blocto.portto.io/en/download/\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "enter-the-blockchain-world-in-just-one-tap-with-blocto",
"title": "ENTER THE BLOCKCHAIN WORLD IN JUST ONE TAP WITH BLOCTO"
}
],
"op_in_trx": 0,
"timestamp": "2021-04-14T05:08:21",
"trx_id": "bf04f5bf71ae1c1e8298f066f5a1320866d39d69",
"trx_in_block": 6,
"virtual_op": 0
}steemdelegated 5.687 SP to @nhanhoang912021/03/22 16:20:45
steemdelegated 5.687 SP to @nhanhoang91
2021/03/22 16:20:45
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 9249.148755 VESTS |
| Transaction Info | Block #52228373/Trx 2d2db3f45e6d78bf762d5e796844ba6ea71fa648 |
View Raw JSON Data
{
"block": 52228373,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "9249.148755 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2021-03-22T16:20:45",
"trx_id": "2d2db3f45e6d78bf762d5e796844ba6ea71fa648",
"trx_in_block": 0,
"virtual_op": 0
}steemdelegated 17.463 SP to @nhanhoang912021/02/02 08:50:24
steemdelegated 17.463 SP to @nhanhoang91
2021/02/02 08:50:24
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 28398.578503 VESTS |
| Transaction Info | Block #50860057/Trx 12147cffbb847eee4157267fb03169c6cfa74347 |
View Raw JSON Data
{
"block": 50860057,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "28398.578503 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2021-02-02T08:50:24",
"trx_id": "12147cffbb847eee4157267fb03169c6cfa74347",
"trx_in_block": 0,
"virtual_op": 0
}beemenginesent 0.001 STEEM to @nhanhoang91- "🚀 Promoting Your Posts 24/24. Community Curation & Support. Checkout http://beemengine.live"2020/12/21 14:17:54
beemenginesent 0.001 STEEM to @nhanhoang91- "🚀 Promoting Your Posts 24/24. Community Curation & Support. Checkout http://beemengine.live"
2020/12/21 14:17:54
| amount | 0.001 STEEM |
| from | beemengine |
| memo | 🚀 Promoting Your Posts 24/24. Community Curation & Support. Checkout http://beemengine.live |
| to | nhanhoang91 |
| Transaction Info | Block #49642341/Trx b90fce2008ad51844c8b7a6bc1ae64b4f2776b3b |
View Raw JSON Data
{
"block": 49642341,
"op": [
"transfer",
{
"amount": "0.001 STEEM",
"from": "beemengine",
"memo": "🚀 Promoting Your Posts 24/24. Community Curation & Support. Checkout http://beemengine.live",
"to": "nhanhoang91"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-21T14:17:54",
"trx_id": "b90fce2008ad51844c8b7a6bc1ae64b4f2776b3b",
"trx_in_block": 0,
"virtual_op": 0
}nhanhoang91published a new post: why-the-graph-is-future-of-web32020/12/21 14:17:00
nhanhoang91published a new post: why-the-graph-is-future-of-web3
2020/12/21 14:17:00
| author | nhanhoang91 |
| body | <h3 class="graf graf--h3">Why The Graph is critical to Web3</h3> <p class="graf graf--p">Are you a Web3 developer and want to find a reliable data source for your dApp? Are you a non-dev but want to participate in a blockchain's network? Are you an entrepreneur who wants to build an enterprise in crypto industry? Are you an ordinary user who hate how social media control your activity and want to switch to dApp (Web3)? Are you investor? Or Are you interested in passive income? Or you just want to find another unicorn in crypto space?</p> <p class="graf graf--p">Am I asking too much? That is my thoughts when start to study about The Graph. You will come to know why!</p> <blockquote class="graf graf--blockquote">The Graph Network will enable truly decentralized applications</blockquote> <p class="graf graf--p"><em class="markup--em markup--p-em">Yaniv Tal - The Graph Project Lead</em></p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*dbNb1DeKvAa2mTcP3z2NCQ.jpeg" data-image-id="1*dbNb1DeKvAa2mTcP3z2NCQ.jpeg" data-width="275" data-height="183" /> <p class="graf graf--p">Why until now we mention dApp again while it is already exploded several years ago? Well as you can see there are none of dApps can make a big impact since CryptoKitties. There are many reasons for that, but the biggest reason is the developers is lacking reliable data resource and time to get it. In this context, The Graph appears as a savior which can help resolve the headache problems existed for a long time. It is no exaggeration to say The Graph is critical to Web3, especially decentralized apps.</p> <h3 class="graf graf--h3">Why I am so excited about The Graph</h3> <p class="graf graf--p">The Graph is no suprisingly a Unicorn Project in this space and we cannot deny the potential of this project. I will tell you why I believe in The Graph. Please continue reading below!</p> <p class="graf graf--p">1. You are a developer and want to build your own dApps? The Graph provides <strong class="markup--strong markup--p-strong">subgraphs</strong> and all data needed are carefully deployed in <strong class="markup--strong markup--p-strong">Explorer</strong> for you to query. For your information, all the <strong class="markup--strong markup--p-strong">biggest DeFi projects</strong> i.e. Uniswap, Synthetix or AAVE are using subgraph.</p> <p class="graf graf--p">2. Are you a non-dev but still want to participate in the network's ecosystem? Don't worry, The Graph and their incredible community provides you all <strong class="markup--strong markup--p-strong">necessary docs</strong>. All you need to do is just to follow step-by-step.</p> <p class="graf graf--p">3. Are you an entrepreneur who wants to build your enterprise in crypto industry? Well <strong class="markup--strong markup--p-strong">The Graph Foundation Grants </strong>can help help turn your ideas into reality</p> <p class="graf graf--p">4. Afraid of <strong class="markup--strong markup--p-strong">security</strong> of the network? Why should you worry while The Graph is being audited by f<strong class="markup--strong markup--p-strong">amous audit companies</strong> (OpenZeppelin, Trail of Bits, Consensys Diligence)?</p> <p class="graf graf--p">5. Afraid of the <strong class="markup--strong markup--p-strong">accuracy</strong> of blockchain data? Well, The Graph have a World Class team behind plus a strong network organization with the participation of <strong class="markup--strong markup--p-strong">Indexers, Curators, Delegators</strong> who will make sure that the data you query is the most accuracy data you can find in blockchain space.</p> <p class="graf graf--p">6. Afraid of the congestion on Ethereum network when querying data? Well the <strong class="markup--strong markup--p-strong">integration of other layer-2 blockchain</strong> will happen soon on The Graph network and make your worry fly away.</p> <p class="graf graf--p">7. Afraid of aping into another ghost town blockchain project? Well usage of The Graph also grown <strong class="markup--strong markup--p-strong">10x</strong>, from 1 billion monthly queries in June to over <strong class="markup--strong markup--p-strong">10 billion</strong> this November, averaging over <strong class="markup--strong markup--p-strong">350 million queries per day</strong>.</p> <p class="graf graf--p">8. Afraid of running your own nodes? The Graph provide <strong class="markup--strong markup--p-strong">hosted service</strong> so that team who want to build on The Graph will find it very easy and comfortable</p> <p class="graf graf--p">9. Afraid of the sustainability of a blockchain project in long term? Well <strong class="markup--strong markup--p-strong">The Graph Foundation</strong> and <strong class="markup--strong markup--p-strong">The Graph Council</strong> is here to stay. They will have the responsible to develop and grow project's ecosystem to make sure everything will be sustainable in their long journey.</p> <p class="graf graf--p">10. Investor? Need Passive Income? The Graph will provide <strong class="markup--strong markup--p-strong">decentralized network </strong>to allow anyone run a node to contribute whatever they want from validation, indexing, caching, to query processing to the network.</p> <p class="graf graf--p">11. Hate Web2 because of its controlling and want to switch to Web3? Then this is the <strong class="markup--strong markup--p-strong">right place</strong> where you can begin your Web3 journey.</p> <h3 class="graf graf--h3">The Graph Explorer</h3> <p class="graf graf--p">The Graph Explorer is where developers can find their expected subgraph for their building. As DeFi booming, subgraphs with respects to DeFi is the most used on The Graph Network. NFT — one of the core components in DeFi ecosystem is emerged recently and pointed out as one of the hottest upcoming trend. NFT may varies from digital arts to collectibles in games. I specially pay attention to gaming collectibles aspect, as Game has long been an indispensable part of the daily entertainment needs of people. According to a research, gaming industry is expected to reach USD 159 Billions in 2020 despite the pandemic. Therefore, it is no surprised that gaming subgraphs are the most critical for Web3 in the next time.</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*spuy2FSaG21mRJE3KbFtTg.jpeg" data-image-id="1*spuy2FSaG21mRJE3KbFtTg.jpeg" data-width="1440" data-height="808" /> <h3 class="graf graf--h3">Why I am happy to be a Curator in The Graph Curator program</h3> <p class="graf graf--p">I am honored to be part of The Graph Curator program. At first, I am a little bit worried after knowing that you need to be a half-dev to be a Curator of the network while I am a non-dev. But everything happens when I start to do the role has changed my mind. There are many other things I can do like creating contents, translation project's docs into my native language to help other community members knowing more about The Graph, making Meme. By that ways, I have also learnt many things about the projects including technical parts. I can now deploy my own subgraph to help the project expand their Explorer. I am so happy, excited and proud that I have made a small contribution to the overall success of the project. And I am even more excited when The Graph is very close to the official launch. When the mainnet launch, it is time for me to work harder, contribute more efforts to the project because I know there will be an unbelievable amount of users joining the network. This is just the beginning. The best is yet to come!</p> Curator Name: justacryptonoob |
| json metadata | {"tags":["thegraph","graphprotocol","thegraphprotocol","blockchaindata"],"image":["https://cdn-images-1.medium.com/max/800/1*dbNb1DeKvAa2mTcP3z2NCQ.jpeg","https://cdn-images-1.medium.com/max/800/1*spuy2FSaG21mRJE3KbFtTg.jpeg"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | thegraph |
| permlink | why-the-graph-is-future-of-web3 |
| title | Why The Graph is future of Web3 |
| Transaction Info | Block #49642323/Trx 9ff2260e2dc13f21aa39d6891b0447e89d5b1a00 |
View Raw JSON Data
{
"block": 49642323,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<h3 class=\"graf graf--h3\">Why The Graph is critical to Web3</h3>\n<p class=\"graf graf--p\">Are you a Web3 developer and want to find a reliable data source for your dApp? Are you a non-dev but want to participate in a blockchain's network? Are you an entrepreneur who wants to build an enterprise in crypto industry? Are you an ordinary user who hate how social media control your activity and want to switch to dApp (Web3)? Are you investor? Or Are you interested in passive income? Or you just want to find another unicorn in crypto space?</p>\n<p class=\"graf graf--p\">Am I asking too much? That is my thoughts when start to study about The Graph. You will come to know why!</p>\n<blockquote class=\"graf graf--blockquote\">The Graph Network will enable truly decentralized applications</blockquote>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Yaniv Tal - The Graph Project Lead</em></p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*dbNb1DeKvAa2mTcP3z2NCQ.jpeg\" data-image-id=\"1*dbNb1DeKvAa2mTcP3z2NCQ.jpeg\" data-width=\"275\" data-height=\"183\" />\n<p class=\"graf graf--p\">Why until now we mention dApp again while it is already exploded several years ago? Well as you can see there are none of dApps can make a big impact since CryptoKitties. There are many reasons for that, but the biggest reason is the developers is lacking reliable data resource and time to get it. In this context, The Graph appears as a savior which can help resolve the headache problems existed for a long time. It is no exaggeration to say The Graph is critical to Web3, especially decentralized apps.</p>\n<h3 class=\"graf graf--h3\">Why I am so excited about The Graph</h3>\n<p class=\"graf graf--p\">The Graph is no suprisingly a Unicorn Project in this space and we cannot deny the potential of this project. I will tell you why I believe in The Graph. Please continue reading below!</p>\n<p class=\"graf graf--p\">1. You are a developer and want to build your own dApps? The Graph provides <strong class=\"markup--strong markup--p-strong\">subgraphs</strong> and all data needed are carefully deployed in <strong class=\"markup--strong markup--p-strong\">Explorer</strong> for you to query. For your information, all the <strong class=\"markup--strong markup--p-strong\">biggest DeFi projects</strong> i.e. Uniswap, Synthetix or AAVE are using subgraph.</p>\n<p class=\"graf graf--p\">2. Are you a non-dev but still want to participate in the network's ecosystem? Don't worry, The Graph and their incredible community provides you all <strong class=\"markup--strong markup--p-strong\">necessary docs</strong>. All you need to do is just to follow step-by-step.</p>\n<p class=\"graf graf--p\">3. Are you an entrepreneur who wants to build your enterprise in crypto industry? Well <strong class=\"markup--strong markup--p-strong\">The Graph Foundation Grants </strong>can help help turn your ideas into reality</p>\n<p class=\"graf graf--p\">4. Afraid of <strong class=\"markup--strong markup--p-strong\">security</strong> of the network? Why should you worry while The Graph is being audited by f<strong class=\"markup--strong markup--p-strong\">amous audit companies</strong> (OpenZeppelin, Trail of Bits, Consensys Diligence)?</p>\n<p class=\"graf graf--p\">5. Afraid of the <strong class=\"markup--strong markup--p-strong\">accuracy</strong> of blockchain data? Well, The Graph have a World Class team behind plus a strong network organization with the participation of <strong class=\"markup--strong markup--p-strong\">Indexers, Curators, Delegators</strong> who will make sure that the data you query is the most accuracy data you can find in blockchain space.</p>\n<p class=\"graf graf--p\">6. Afraid of the congestion on Ethereum network when querying data? Well the <strong class=\"markup--strong markup--p-strong\">integration of other layer-2 blockchain</strong> will happen soon on The Graph network and make your worry fly away.</p>\n<p class=\"graf graf--p\">7. Afraid of aping into another ghost town blockchain project? Well usage of The Graph also grown <strong class=\"markup--strong markup--p-strong\">10x</strong>, from 1 billion monthly queries in June to over <strong class=\"markup--strong markup--p-strong\">10 billion</strong> this November, averaging over <strong class=\"markup--strong markup--p-strong\">350 million queries per day</strong>.</p>\n<p class=\"graf graf--p\">8. Afraid of running your own nodes? The Graph provide <strong class=\"markup--strong markup--p-strong\">hosted service</strong> so that team who want to build on The Graph will find it very easy and comfortable</p>\n<p class=\"graf graf--p\">9. Afraid of the sustainability of a blockchain project in long term? Well <strong class=\"markup--strong markup--p-strong\">The Graph Foundation</strong> and <strong class=\"markup--strong markup--p-strong\">The Graph Council</strong> is here to stay. They will have the responsible to develop and grow project's ecosystem to make sure everything will be sustainable in their long journey.</p>\n<p class=\"graf graf--p\">10. Investor? Need Passive Income? The Graph will provide <strong class=\"markup--strong markup--p-strong\">decentralized network </strong>to allow anyone run a node to contribute whatever they want from validation, indexing, caching, to query processing to the network.</p>\n<p class=\"graf graf--p\">11. Hate Web2 because of its controlling and want to switch to Web3? Then this is the <strong class=\"markup--strong markup--p-strong\">right place</strong> where you can begin your Web3 journey.</p>\n<h3 class=\"graf graf--h3\">The Graph Explorer</h3>\n<p class=\"graf graf--p\">The Graph Explorer is where developers can find their expected subgraph for their building. As DeFi booming, subgraphs with respects to DeFi is the most used on The Graph Network. NFT — one of the core components in DeFi ecosystem is emerged recently and pointed out as one of the hottest upcoming trend. NFT may varies from digital arts to collectibles in games. I specially pay attention to gaming collectibles aspect, as Game has long been an indispensable part of the daily entertainment needs of people. According to a research, gaming industry is expected to reach USD 159 Billions in 2020 despite the pandemic. Therefore, it is no surprised that gaming subgraphs are the most critical for Web3 in the next time.</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*spuy2FSaG21mRJE3KbFtTg.jpeg\" data-image-id=\"1*spuy2FSaG21mRJE3KbFtTg.jpeg\" data-width=\"1440\" data-height=\"808\" />\n<h3 class=\"graf graf--h3\">Why I am happy to be a Curator in The Graph Curator program</h3>\n<p class=\"graf graf--p\">I am honored to be part of The Graph Curator program. At first, I am a little bit worried after knowing that you need to be a half-dev to be a Curator of the network while I am a non-dev. But everything happens when I start to do the role has changed my mind. There are many other things I can do like creating contents, translation project's docs into my native language to help other community members knowing more about The Graph, making Meme. By that ways, I have also learnt many things about the projects including technical parts. I can now deploy my own subgraph to help the project expand their Explorer. I am so happy, excited and proud that I have made a small contribution to the overall success of the project. And I am even more excited when The Graph is very close to the official launch. When the mainnet launch, it is time for me to work harder, contribute more efforts to the project because I know there will be an unbelievable amount of users joining the network. This is just the beginning. The best is yet to come!</p>\n\nCurator Name: justacryptonoob",
"json_metadata": "{\"tags\":[\"thegraph\",\"graphprotocol\",\"thegraphprotocol\",\"blockchaindata\"],\"image\":[\"https://cdn-images-1.medium.com/max/800/1*dbNb1DeKvAa2mTcP3z2NCQ.jpeg\",\"https://cdn-images-1.medium.com/max/800/1*spuy2FSaG21mRJE3KbFtTg.jpeg\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "thegraph",
"permlink": "why-the-graph-is-future-of-web3",
"title": "Why The Graph is future of Web3"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-21T14:17:00",
"trx_id": "9ff2260e2dc13f21aa39d6891b0447e89d5b1a00",
"trx_in_block": 7,
"virtual_op": 0
}nhanhoang91published a new post: assemblyscript-api2020/12/16 06:11:18
nhanhoang91published a new post: assemblyscript-api
2020/12/16 06:11:18
| author | nhanhoang91 |
| body | <p class="graf graf--p">Trang này ghi lại những API tích hợp có thể được sử dụng khi viết mapping cho subgraph. Hai loại API có sẵn ngay lập tức:</p> <ul class="postList"> <li class="graf graf--li"><a class="markup--anchor markup--li-anchor" href="https://github.com/graphprotocol/graph-ts" target="_blank" rel="noopener" data-href="https://github.com/graphprotocol/graph-ts">Thư viện Graph TypeScript</a> (<code class="markup--code markup--li-code">graph-ts</code>) và</li> <li class="graf graf--li">Mã được tạo từ các tệp subgraph bởi <code class="markup--code markup--li-code">graph codegen</code>.</li> </ul> <p class="graf graf--p">Cũng có thể thêm các thư viện khác làm dependencies, miễn là chúng tương thích với <a class="markup--anchor markup--p-anchor" href="https://github.com/AssemblyScript/assemblyscript" target="_blank" rel="noopener" data-href="https://github.com/AssemblyScript/assemblyscript">AssemblyScript</a>. Vì đây được viết bằng ngôn ngữ mapping, nên <a class="markup--anchor markup--p-anchor" href="https://github.com/AssemblyScript/assemblyscript/wiki" target="_blank" rel="noopener" data-href="https://github.com/AssemblyScript/assemblyscript/wiki">AssemblyScript wiki</a> là một nguồn tốt cho ngôn ngữ và các tính năng thư viện tiêu chuẩn.</p> <h3 class="graf graf--h3">Cài đặt</h3> <p class="graf graf--p">Subgraph được tạo với<code class="markup--code markup--p-code"><a class="markup--anchor markup--p-anchor" href="https://thegraph.com/docs/define-a-subgraph#create-a-subgraph-project" target="_blank" rel="noopener" data-href="https://thegraph.com/docs/define-a-subgraph#create-a-subgraph-project">graph init</a></code> đi kèm với các dependencies được định cấu hình trước. Tất cả những gì cần thiết để cài đặt các dependencies này là chạy một trong các lệnh sau:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">yarn install # Yarn<br />npm install # NPM</code></pre> <p class="graf graf--p">Nếu subgraph được tạo từ đầu, một trong hai lệnh sau sẽ cài đặt thư viện Graph TypeScript dưới dạng dependencies:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">yarn add --dev @graphprotocol/graph-ts # Yarn<br />npm install --save-dev @graphprotocol/graph-ts # NPM</code></pre> <h3 class="graf graf--h3">Tham chiếu API</h3> <p class="graf graf--p">Thư viện <a class="markup--anchor markup--p-anchor" title="Twitter profile for @graphprotocol/graph-ts" href="http://twitter.com/graphprotocol/graph-ts" target="_blank" rel="noopener" data-href="http://twitter.com/graphprotocol/graph-ts">@graphprotocol/graph-ts</a> cung cấp các API sau:</p> <ul class="postList"> <li class="graf graf--li">Một <code class="markup--code markup--li-code">ethereum</code> API để làm việc với hợp đồng thông minh Ethereum, sự kiện, khối, giao dịch và giá trị Ethereum.</li> <li class="graf graf--li">Một <code class="markup--code markup--li-code">store</code> API để tải và lưu các thực thể từ và vào Graph Node.</li> <li class="graf graf--li">Một <code class="markup--code markup--li-code">log</code> API để ghi các thông báo vào đầu ra Graph Node và Graph Explorer.</li> <li class="graf graf--li">Một <code class="markup--code markup--li-code">ipfs</code> API để tải tệp từ IPFS.</li> <li class="graf graf--li">Một <code class="markup--code markup--li-code">json</code> API để phân tích dữ liệu JSON.</li> <li class="graf graf--li">Một <code class="markup--code markup--li-code">crypto</code> API để sử dụng các hàm mật mã.</li> <li class="graf graf--li">Dữ liệu nguyên thủy cấp thấp để dịch giữa các hệ thống kiểu khác nhau như Ethereum, JSON, GraphQL và AssemblyScript.</li> </ul> <h3 class="graf graf--h3">Các loại tích hợp</h3> <p class="graf graf--p">Có thể tìm thấy tài liệu về các kiểu cơ sở được tích hợp trong AssemblyScript trong <a class="markup--anchor markup--p-anchor" href="https://github.com/AssemblyScript/assemblyscript/wiki/Types" target="_blank" rel="noopener" data-href="https://github.com/AssemblyScript/assemblyscript/wiki/Types">AssemblyScript wiki</a>.</p> <p class="graf graf--p">Các loại bổ sung sau được cung cấp bởi <code class="markup--code markup--p-code">@graphprotocol/graph-ts</code>.</p> <h4 class="graf graf--h4">ByteArray</h4> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { ByteArray } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p"><code class="markup--code markup--p-code">ByteArray</code> đại diện cho một mảng <code class="markup--code markup--p-code">u8</code>.</p> <p class="graf graf--p"><em class="markup--em markup--p-em">Xây dựng</em></p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">fromI32(x: i32): ByteArray</code> - Phân hủy <code class="markup--code markup--li-code">x</code> thành bytes.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">fromHexString(hex: string): ByteArray</code> - Độ dài đầu vào phải bằng. Tiền tố bằng <code class="markup--code markup--li-code">0x</code> là tùy chọn.</li> </ul> <p class="graf graf--p"><em class="markup--em markup--p-em">Nhập chuyển đổi</em></p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">toHexString(): string</code> - Chuyển đổi thành một chuỗi hex có tiền tố là <code class="markup--code markup--li-code">0x</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">toString(): string</code> - Diễn giải các byte dưới dạng chuỗi UTF-8.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">toBase58(): string</code> - Mã hóa các byte thành một chuỗi base58.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">toU32(): u32</code> - Diễn giải các byte là một phần tử nhỏ <code class="markup--code markup--li-code">u32</code>. Ném trong trường hợp tràn.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">toI32(): i32</code> - Diễn giải mảng byte là một phần tử nhỏ <code class="markup--code markup--li-code">i32</code>. Ném trong trường hợp tràn.</li> </ul> <p class="graf graf--p"><em class="markup--em markup--p-em">Người điều hành</em></p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">equals(y: ByteArray): bool</code> - có thể được viết là<code class="markup--code markup--li-code">x == y</code>.</li> </ul> <h4 class="graf graf--h4">BigDecimal</h4> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { BigDecimal } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p"><code class="markup--code markup--p-code">BigDecimal</code> được sử dụng để biểu thị số thập phân chính xác tùy ý.</p> <p class="graf graf--p"><em class="markup--em markup--p-em">Xây dựng</em></p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">constructor(bigInt: BigInt)</code> - tạo một<code class="markup--code markup--li-code">BigDecimal</code> từ một<code class="markup--code markup--li-code">BigInt</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">static fromString(s: string): BigDecimal</code> - phân tích cú pháp từ một chuỗi thập phân.</li> </ul> <p class="graf graf--p"><em class="markup--em markup--p-em">Nhập chuyển đổi</em></p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">toString(): string</code> - in thành một chuỗi thập phân.</li> </ul> <p class="graf graf--p"><em class="markup--em markup--p-em">Toán</em></p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">plus(y: BigDecimal): BigDecimal</code> - có thể viết là<code class="markup--code markup--li-code">x + y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">minus(y: BigDecimal): BigDecimal</code> - có thể viết là <code class="markup--code markup--li-code">x - y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">times(y: BigDecimal): BigDecimal</code> -có thể viết là <code class="markup--code markup--li-code">x * y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">dividedBy(y: BigDecimal): BigDecimal</code> - có thể viết là <code class="markup--code markup--li-code">x / y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">equals(y: BigDecimal): bool</code> - có thể viết là <code class="markup--code markup--li-code">x == y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">notEqual(y: BigDecimal): bool</code> - có thể viết là <code class="markup--code markup--li-code">x != y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">lt(y: BigDecimal): bool</code> - có thể viết là <code class="markup--code markup--li-code">x < y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">le(y: BigDecimal): bool</code> - có thể viết là <code class="markup--code markup--li-code">x <= y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">gt(y: BigDecimal): bool</code> - có thể viết là <code class="markup--code markup--li-code">x > y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">ge(y: BigDecimal): bool</code> - có thể viết là <code class="markup--code markup--li-code">x >= y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">neg(): BigDecimal</code> - có thể viết là <code class="markup--code markup--li-code">-x</code>.</li> </ul> <h4 class="graf graf--h4">BigInt</h4> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { BigInt } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p"><code class="markup--code markup--p-code">BigInt</code> được sử dụng để biểu diễn số nguyên lớn. Điều này bao gồm các giá trị Ethereum thuộc loại <code class="markup--code markup--p-code">uint32</code> đến<code class="markup--code markup--p-code">uint256</code> và <code class="markup--code markup--p-code">int64</code> đến<code class="markup--code markup--p-code">int256</code>. Mọi thứ dưới<code class="markup--code markup--p-code">uint32</code>, như là<code class="markup--code markup--p-code">int32</code>, <code class="markup--code markup--p-code">uint24</code> hoặc <code class="markup--code markup--p-code">int8</code> được biểu thị là<code class="markup--code markup--p-code">i32</code>.</p> <p class="graf graf--p">Lớp <code class="markup--code markup--p-code">BigInt </code>có API sau:</p> <p class="graf graf--p"><em class="markup--em markup--p-em">Xây dựng</em></p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">BigInt.fromI32(x: i32): BigInt</code> - tạo một<code class="markup--code markup--li-code">BigInt</code> từ một<code class="markup--code markup--li-code">i32</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">BigInt.fromUnsignedBytes(x: Bytes): BigInt</code> - Diễn giải<code class="markup--code markup--li-code">bytes</code> dưới dạng một số nguyên không dấu, little-endian. Nếu đầu vào của bạn là big-endian, hãy gọi <code class="markup--code markup--li-code">.reverse()</code> đầu tiên.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">BigInt.fromSignedBytes(x: Bytes): BigInt</code> - Diễn giải <code class="markup--code markup--li-code">bytes</code> dưới dạng một số nguyên có dấu, little-endian. Nếu đầu vào của bạn là big-endian, hãy gọi <code class="markup--code markup--li-code">.reverse()</code> đầu tiên.</li> </ul> <p class="graf graf--p"><em class="markup--em markup--p-em">Nhập chuyển đổi</em></p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">x.toHex(): string</code> - biến <code class="markup--code markup--li-code">BigInt</code> thành một chuỗi ký tự thập lục phân.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.toString(): string</code> - biến <code class="markup--code markup--li-code">BigInt</code> thành một chuỗi số thập phân.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.toI32(): i32</code> - trả về<code class="markup--code markup--li-code">BigInt</code> như là một<code class="markup--code markup--li-code">i32</code>; không thành công nếu giá trị không phù hợp với <code class="markup--code markup--li-code">i32</code>. Bạn nên kiểm tra trước <code class="markup--code markup--li-code">x.isI32()</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.toBigDecimal(): BigDecimal</code> - chuyển đổi thành một số thập phân không có phần phân số.</li> </ul> <p class="graf graf--p"><em class="markup--em markup--p-em">Toán</em></p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">x.plus(y: BigInt): BigInt</code> - có thể viết là <code class="markup--code markup--li-code">x + y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.minus(y: BigInt): BigInt</code> - có thể viết là <code class="markup--code markup--li-code">x - y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.times(y: BigInt): BigInt</code> - có thể viết là <code class="markup--code markup--li-code">x * y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.dividedBy(y: BigInt): BigInt</code> - có thể viết là <code class="markup--code markup--li-code">x / y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.mod(y: BigInt): BigInt</code> - có thể viết là <code class="markup--code markup--li-code">x % y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.equals(y: BigInt): bool</code> - có thể viết là <code class="markup--code markup--li-code">x == y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.notEqual(y: BigInt): bool</code> - có thể viết là <code class="markup--code markup--li-code">x != y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.lt(y: BigInt): bool</code> - có thể viết là <code class="markup--code markup--li-code">x < y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.le(y: BigInt): bool</code> - có thể viết là <code class="markup--code markup--li-code">x <= y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.gt(y: BigInt): bool</code> - có thể viết là <code class="markup--code markup--li-code">x > y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.ge(y: BigInt): bool</code> - có thể viết là <code class="markup--code markup--li-code">x >= y</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.neg(): BigInt</code> - có thể viết là <code class="markup--code markup--li-code">-x</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.divDecimal(y: BigDecimal): BigDecimal</code> - chia cho một số thập phân, cho một kết quả thập phân.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.isZero(): bool</code> - Thuận tiện để kiểm tra nếu số bằng 0.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.isI32(): bool</code> - Kiểm tra xem con số có khớp với<code class="markup--code markup--li-code">i32</code>.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.abs(): BigInt</code> - Giá trị tuyệt đối.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">x.pow(exp: u8): BigInt</code> - Luỹ thừa.</li> </ul> <h4 class="graf graf--h4">TypedMap</h4> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { TypedMap } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p"><code class="markup--code markup--p-code">TypedMap</code> có thể được sử dụng cho các cặp khóa-giá trị được lưu trữ. Hãy xem <a class="markup--anchor markup--p-anchor" href="https://github.com/graphprotocol/aragon-subgraph/blob/29dd38680c5e5104d9fdc2f90e740298c67e4a31/individual-dao-subgraph/mappings/constants.ts#L51" target="_blank" rel="noopener" data-href="https://github.com/graphprotocol/aragon-subgraph/blob/29dd38680c5e5104d9fdc2f90e740298c67e4a31/individual-dao-subgraph/mappings/constants.ts#L51">ví dụ này</a>.</p> <p class="graf graf--p">Lớp <code class="markup--code markup--p-code">TypedMap</code> có API sau:</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">new TypedMap<K, V>()</code> - tạo một bản đồ trống với các loại phím <code class="markup--code markup--li-code">K</code> và các giá trị của loại <code class="markup--code markup--li-code">T</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">map.set(key: K, value: V): void</code> - đặt giá trị của <code class="markup--code markup--li-code">key</code> thành <code class="markup--code markup--li-code">value</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">map.getEntry(key: K): TypedMapEntry<K, V> | null</code> - trả về cặp khóa-giá trị cho một <code class="markup--code markup--li-code">key</code> hoặc <code class="markup--code markup--li-code">null</code> nếu<code class="markup--code markup--li-code">key</code> không tồn tại trong bản đồ</li> <li class="graf graf--li"><code class="markup--code markup--li-code">map.get(key: K): V | null</code> - trả về giá trị cho một <code class="markup--code markup--li-code">key</code> hoặc<code class="markup--code markup--li-code">null</code> nếu <code class="markup--code markup--li-code">key</code> không tồn tại trong bản đồ</li> <li class="graf graf--li"><code class="markup--code markup--li-code">map.isSet(key: K): bool</code> - trả về<code class="markup--code markup--li-code">true</code> nếu <code class="markup--code markup--li-code">key</code> tồn tại trong bản đồ và <code class="markup--code markup--li-code">false</code> nếu nó không</li> </ul> <h4 class="graf graf--h4">Bytes</h4> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { Bytes } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p"><code class="markup--code markup--p-code">Bytes</code> được sử dụng để đại diện cho các mảng byte có độ dài tùy ý. Điều này bao gồm các giá trị Ethereum thuộc loại <code class="markup--code markup--p-code">bytes</code>, <code class="markup--code markup--p-code">bytes32</code> v.v..</p> <p class="graf graf--p">Lớp<code class="markup--code markup--p-code">Bytes</code> mở rộng Uint8Array của AssemblyScript và điều này hỗ trợ tất cả chức năng<code class="markup--code markup--p-code">Uint8Array</code> cộng với các phương pháp mới sau:</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">b.toHex()</code> - trả về một chuỗi thập lục phân đại diện cho các byte trong mảng</li> <li class="graf graf--li"><code class="markup--code markup--li-code">b.toString()</code> - chuyển đổi các byte trong mảng thành một chuỗi ký tự unicode</li> <li class="graf graf--li"><code class="markup--code markup--li-code">b.toBase58()</code> - chuyển giá trị Ethereum Byte thành mã hóa base58 (được sử dụng cho các hàm băm IPFS)</li> </ul> <h4 class="graf graf--h4">Address</h4> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { Address } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p"><code class="markup--code markup--p-code">Address</code> kéo dài<code class="markup--code markup--p-code">Bytes</code> đại diện cho giá trị Ethereum <code class="markup--code markup--p-code">address</code> .</p> <p class="graf graf--p">Nó thêm phương thức sau vào đầu trang <code class="markup--code markup--p-code">Bytes</code> API:</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">Address.fromString(s: string): Address</code> - tạo một<code class="markup--code markup--li-code">Address</code> từ một chuỗi thập lục phân</li> </ul> <h3 class="graf graf--h3">Lưu trữ API</h3> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { store } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p">API <code class="markup--code markup--p-code">store</code> cho phép tải, lưu và loại bỏ các thực thể từ và đến lưu trữ Graph Node.</p> <p class="graf graf--p">Các thực thể được ghi vào map lưu trữ 1-1 với loại<code class="markup--code markup--p-code">@entity</code> được xác định trong lược đồ GraphQL của đồ thị con. Để làm việc với các thực thể này thuận tiện, lệnh<code class="markup--code markup--p-code">graph codegen</code> được cung cấp bởi <a class="markup--anchor markup--p-anchor" href="https://github.com/graphprotocol/graph-cli" target="_blank" rel="noopener" data-href="https://github.com/graphprotocol/graph-cli">Graph CLI</a> tạo ra các lớp thực thể, là các lớp con của phần mềm cài sẵn loại<code class="markup--code markup--p-code">Entity</code> với bộ nhận thuộc tính và bộ định vị cho các trường trong lược đồ cũng như các phương thức để tải và lưu các thực thể này.</p> <h4 class="graf graf--h4">Tạo thực thể</h4> <p class="graf graf--p">Sau đây là một mẫu phổ biến để tạo các thực thể từ các sự kiện Ethereum.</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// Import the Transfer event class generated from the ERC20 ABI<br />import { Transfer as TransferEvent } from '../generated/ERC20/ERC20'</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// Import the Transfer entity type generated from the GraphQL schema<br />import { Transfer } from '../generated/schema'</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// Transfer event handler<br />export function handleTransfer(event: TransferEvent): void {<br /> // Create a Transfer entity, using the hexadecimal string representation<br /> // of the transaction hash as the entity ID<br /> let id = event.transaction.hash.toHex()<br /> let transfer = new Transfer(id)</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code"> // Set properties on the entity, using the event parameters<br /> transfer.from = event.params.from<br /> transfer.to = event.params.to<br /> transfer.amount = event.params.amount</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code"> // Save the entity to the store<br /> transfer.save()<br />}</code></pre> <p class="graf graf--p">Khi một sự kiện<code class="markup--code markup--p-code">Transfer</code> gặp phải trong khi xử lý chuỗi, nó được chuyển đến <code class="markup--code markup--p-code">handleTransfer</code> xử lý sự kiện bằng cách sử dụng loại<code class="markup--code markup--p-code">Transfer</code> (bí danh là <code class="markup--code markup--p-code">TransferEvent</code> ở đây để tránh xung đột đặt tên với loại thực thể). Loại này cho phép truy cập dữ liệu như giao dịch mẹ của sự kiện và các tham số của nó.</p> <p class="graf graf--p">Mỗi thực thể phải có một ID duy nhất để tránh va chạm với các thực thể khác. Việc tham số sự kiện bao gồm một mã định danh duy nhất có thể được sử dụng là điều khá phổ biến. Lưu ý: Việc sử dụng hàm băm giao dịch làm ID giả định rằng không có sự kiện nào khác trong cùng một giao dịch tạo ra các thực thể có hàm băm này làm ID.</p> <h4 class="graf graf--h4">Tải các thực thể từ lưu trữ</h4> <p class="graf graf--p">Nếu một thực thể đã tồn tại, nó có thể được tải từ lưu trữ với những thứ sau:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">let id = event.transaction.hash.toHex() // or however the ID is constructed<br />let transfer = Transfer.load(id)<br />if (transfer == null) {<br /> transfer = new Transfer(id)<br />}</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// Use the Transfer entity as before</code></pre> <p class="graf graf--p">Vì thực thể có thể chưa tồn tại trong lưu trữ, phương thức <code class="markup--code markup--p-code">load</code> trả về một giá trị kiểu <code class="markup--code markup--p-code">Transfer | null</code>. Do đó, có thể cần phải kiểm tra trường hợp<code class="markup--code markup--p-code">null</code> trước khi sử dụng giá trị.</p> <blockquote class="graf graf--blockquote"><strong class="markup--strong markup--blockquote-strong"><em class="markup--em markup--blockquote-em">Ghi chú:</em></strong> Việc tải các thực thể chỉ cần thiết nếu các thay đổi được thực hiện trong mapping phụ thuộc vào dữ liệu trước đó của một thực thể. Xem phần tiếp theo để biết hai cách cập nhật các thực thể hiện có<em class="markup--em markup--blockquote-em">.</em></blockquote> <h4 class="graf graf--h4">Cập nhật các thực thể hiện có</h4> <p class="graf graf--p">Có hai cách để cập nhật một thực thể hiện có:</p> <ol class="postList"> <li class="graf graf--li">Tải thực thể với ví dụ: <code class="markup--code markup--li-code">Transfer.load(id)</code>, đặt thuộc tính trên thực thể, sau đó <code class="markup--code markup--li-code">.save()</code> nó trở lại lưu trữ.</li> <li class="graf graf--li">Chỉ cần tạo thực thể với ví dụ: <code class="markup--code markup--li-code">new Transfer(id)</code>, đặt thuộc tính trên thực thể, sau đó <code class="markup--code markup--li-code">.save()</code> nó đến lưu trữ. Nếu thực thể đã tồn tại, các thay đổi sẽ được hợp nhất vào nó.</li> </ol> <p class="graf graf--p">Trong hầu hết các trường hợp, việc thay đổi thuộc tính diễn ra ngay lập tức, nhờ vào các bộ thiết lập thuộc tính đã tạo:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">let transfer = new Transfer(id)<br />transfer.from = ...<br />transfer.to = ...<br />transfer.amount = ...</code></pre> <p class="graf graf--p">Cũng có thể hủy đặt thuộc tính bằng một trong hai hướng dẫn sau:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">transfer.from.unset()<br />transfer.from = null</code></pre> <p class="graf graf--p">Điều này chỉ hoạt động với các thuộc tính tùy chọn, tức là các thuộc tính được khai báo mà không có <code class="markup--code markup--p-code">!</code> trong GraphQL. Hai ví dụ sẽ là <code class="markup--code markup--p-code">owner: Bytes</code> hoặc<code class="markup--code markup--p-code">amount: BigInt</code>.</p> <p class="graf graf--p">Cập nhật các thuộc tính mảng có liên quan nhiều hơn một chút, vì việc nhận một mảng từ một thực thể sẽ tạo ra một bản sao của mảng đó. Điều này có nghĩa là các thuộc tính mảng phải được đặt lại một cách rõ ràng sau khi thay đổi mảng. Các giả định sau <code class="markup--code markup--p-code">entity</code> có một trường<code class="markup--code markup--p-code">numbers: [BigInt!]!</code> .</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// This won't work<br />entity.numbers.push(BigInt.fromI32(1))<br />entity.save()</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// This will work<br />let numbers = entity.numbers<br />numbers.push(BigInt.fromI32(1))<br />entity.numbers = numbers<br />entity.save()</code></pre> <h4 class="graf graf--h4">Xóa các thực thể khỏi lưu trữ</h4> <p class="graf graf--p">Hiện không có cách nào để xóa một thực thể thông qua các loại đã tạo. Thay vào đó, việc xóa một thực thể yêu cầu chuyển tên của loại thực thể và ID thực thể tới <code class="markup--code markup--p-code">store.remove</code>:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { store } from '@graphprotocol/graph-ts'<br />...<br />let id = event.transaction.hash.toHex()<br />store.remove('Transfer', id)</code></pre> <h3 class="graf graf--h3">Ethereum API</h3> <p class="graf graf--p">API Ethereum cung cấp quyền truy cập vào hợp đồng thông minh, biến trạng thái công khai, chức năng hợp đồng, sự kiện, giao dịch và khối.</p> <h4 class="graf graf--h4">Hỗ trợ các loại Ethereum</h4> <p class="graf graf--p">Như với các thực thể, <code class="markup--code markup--p-code">graph codegen</code> tạo các lớp cho tất cả các hợp đồng và sự kiện thông minh được sử dụng trong một subgraph. Đối với điều này, các ABI hợp đồng cần phải là một phần của nguồn dữ liệu trong bản kê khai subgraph. Thông thường, các tệp ABI được lưu trữ trong một thư mục<code class="markup--code markup--p-code">abis/</code> .</p> <p class="graf graf--p">Với các lớp được tạo, chuyển đổi giữa các loại Ethereum và các <a class="markup--anchor markup--p-anchor" href="https://thegraph.com/docs/assemblyscript-api#built-in-types" target="_blank" rel="noopener" data-href="https://thegraph.com/docs/assemblyscript-api#built-in-types">kiểu dựng sẵn</a> diễn ra ở hậu trường để các tác giả của subgraph không phải lo lắng về chúng.</p> <p class="graf graf--p">Ví dụ sau đây minh họa điều này. Đưa ra một lược đồ subgraph như</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">type Transfer @entity {<br /> from: Bytes!<br /> to: Bytes!<br /> amount: BigInt!<br />}</code></pre> <p class="graf graf--p">và một <code class="markup--code markup--p-code">Transfer(address,address,uint256)</code> chữ ký sự kiện trên Ethereum, <code class="markup--code markup--p-code">from</code>, <code class="markup--code markup--p-code">to</code> và <code class="markup--code markup--p-code">amount</code> giá trị của loại <code class="markup--code markup--p-code">address</code>, <code class="markup--code markup--p-code">address</code> và <code class="markup--code markup--p-code">uint256</code> được chuyển đổi thành <code class="markup--code markup--p-code">Address</code> và <code class="markup--code markup--p-code">BigInt</code>, cho phép chúng được chuyển cho <code class="markup--code markup--p-code">Bytes!</code> và <code class="markup--code markup--p-code">BigInt!</code> thuộc tính của thực thể<code class="markup--code markup--p-code">Transfer</code>:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">let id = event.transaction.hash.toHex()<br />let transfer = new Transfer(id)<br />transfer.from = event.params.from<br />transfer.to = event.params.to<br />transfer.amount = event.params.amount<br />transfer.save()</code></pre> <h4 class="graf graf--h4">Sự kiện và dữ liệu khối / giao dịch</h4> <p class="graf graf--p">Các sự kiện Ethereum được chuyển đến xử lý sự kiện, chẳng hạn nhưsự kiện<code class="markup--code markup--p-code">Transfer</code> trong các ví dụ trước, không chỉ cung cấp quyền truy cập vào các tham số sự kiện mà còn cho giao dịch mẹ của chúng và khối mà chúng là một phần. Dữ liệu sau đây có thể được lấy từ cá thể<code class="markup--code markup--p-code">event</code> (các lớp này là một phần của <code class="markup--code markup--p-code">ethereum</code> mô-đun trong <code class="markup--code markup--p-code">graph-ts</code>):</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">class Event {<br /> address: Address<br /> logIndex: BigInt<br /> transactionLogIndex: BigInt<br /> logType: string | null<br /> block: Block<br /> transaction: Transaction<br /> parameters: Array<EventParam><br />}</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">class Block {<br /> hash: Bytes<br /> parentHash: Bytes<br /> unclesHash: Bytes<br /> author: Address<br /> stateRoot: Bytes<br /> transactionsRoot: Bytes<br /> receiptsRoot: Bytes<br /> number: BigInt<br /> gasUsed: BigInt<br /> gasLimit: BigInt<br /> timestamp: BigInt<br /> difficulty: BigInt<br /> totalDifficulty: BigInt<br /> size: BigInt | null<br />}</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">class Transaction {<br /> hash: Bytes<br /> index: BigInt<br /> from: Address<br /> to: Address | null<br /> value: BigInt<br /> gasUsed: BigInt<br /> gasPrice: BigInt<br /> input: Bytes<br />}</code></pre> <h4 class="graf graf--h4">Quyền truy cập vào trạng thái hợp đồng thông minh</h4> <p class="graf graf--p">Mã được tạo bởi <code class="markup--code markup--p-code">graph codegen</code> cũng bao gồm các lớp cho các hợp đồng thông minh được sử dụng trong subgraph. Chúng có thể được sử dụng để truy cập các biến trạng thái công khai và gọi các hàm của hợp đồng tại khối hiện tại.</p> <p class="graf graf--p">Một mô hình phổ biến là truy cập vào hợp đồng mà từ đó một sự kiện bắt nguồn. Điều này đạt được với đoạn mã sau:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// Import the generated contract class<br />import { ERC20Contract } from '../generated/ERC20Contract/ERC20Contract'<br />// Import the generated entity class<br />import { Transfer } from '../generated/schema'</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">export function handleTransfer(event: Transfer) {<br /> // Bind the contract to the address that emitted the event<br /> let contract = ERC20Contract.bind(event.address)</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code"> // Access state variables and functions by calling them<br /> let erc20Symbol = contract.symbol()<br />}</code></pre> <p class="graf graf--p">Miễn là<code class="markup--code markup--p-code">ERC20Contract</code> trên Ethereum có một chức năng chỉ đọc công khai được gọi là <code class="markup--code markup--p-code">symbol</code>, nó có thể được gọi với<code class="markup--code markup--p-code">.symbol()</code>. Đối với các biến trạng thái công khai, một phương thức có cùng tên được tạo tự động.</p> <p class="graf graf--p">Bất kỳ hợp đồng nào khác là một phần của tiểu mục đều có thể được nhập từ mã đã tạo và có thể được ràng buộc với một địa chỉ hợp lệ.</p> <h3 class="graf graf--h3">Ghi nhật ký và gỡ lỗi</h3> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { log } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p"><code class="markup--code markup--p-code">log</code>API cho phép các subgraph ghi thông tin vào đầu ra chuẩn của Graph Node cũng như Graph Explorer. Tin nhắn có thể được ghi lại bằng các cấp độ nhật ký khác nhau. Cú pháp chuỗi định dạng cơ bản được cung cấp để soạn thông báo nhật ký từ đối số.</p> <p class="graf graf--p"><code class="markup--code markup--p-code">log</code> API bao gồm các chức năng sau:</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">log.debug(fmt: string, args: Array<string>): void</code> - ghi lại một thông báo gỡ lỗi.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">log.info(fmt: string, args: Array<string>): void</code> - ghi lại một tin nhắn thông tin.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">log.warning(fmt: string, args: Array<string>): void</code> - ghi lại một cảnh báo.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">log.error(fmt: string, args: Array<string>): void</code> - ghi lại một thông báo lỗi.</li> <li class="graf graf--li"><code class="markup--code markup--li-code">log.critical(fmt: string, args: Array<string>): void</code> - ghi lại một thông điệp quan trọng và kết thúc subgraph.</li> </ul> <p class="graf graf--p"><code class="markup--code markup--p-code">log</code> API nhận một chuỗi định dạng và một mảng các giá trị chuỗi. Sau đó, nó thay thế trình giữ chỗ bằng các giá trị chuỗi từ mảng. Trình giữ chỗ {} đầu tiên được thay thế bằng giá trị đầu tiên trong mảng, trình giữ chỗ {} thứ hai được thay thế bằng giá trị thứ hai, v.v.</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">log.info('Message to be displayed: {}, {}, {}', [<br /> value.toString(),<br /> anotherValue.toString(),<br /> 'already a string',<br />])</code></pre> <h3 class="graf graf--h3">Ghi nhật ký một hoặc nhiều giá trị</h3> <h4 class="graf graf--h4">Ghi nhật ký một giá trị</h4> <p class="graf graf--p">Trong ví dụ dưới đây, giá trị chuỗi “A” được chuyển vào một mảng để trở thành<code class="markup--code markup--p-code">['A']</code> trước khi được đăng nhập:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">let myValue = 'A'</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">export function handleSomeEvent(event: SomeEvent): void {<br /> // Displays : "My value is: A"<br /> log.info('My value is: {}', [myValue])<br />}</code></pre> <h4 class="graf graf--h4">Ghi nhật ký một mục nhập từ một mảng hiện có</h4> <p class="graf graf--p">Trong ví dụ dưới đây, chỉ giá trị đầu tiên của mảng đối số được ghi lại, mặc dù mảng chứa ba giá trị.</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">let myArray = ['A', 'B', 'C']</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">export function handleSomeEvent(event: SomeEvent): void {<br /> // Displays : "My value is: A" (Even though three values are passed to `log.info`)<br /> log.info('My value is: {}', myArray)<br />}</code></pre> <h4 class="graf graf--h4">Ghi nhật ký nhiều mục từ một mảng hiện có</h4> <p class="graf graf--p">Mỗi mục nhập trong mảng đối số yêu cầu trình giữ chỗ riêng của nó <code class="markup--code markup--p-code">{}</code> trong chuỗi thông báo nhật ký. Ví dụ dưới đây chứa ba trình giữ chỗ <code class="markup--code markup--p-code">{}</code> trong thông báo nhật ký. Do đó, cả ba giá trị trong <code class="markup--code markup--p-code">myArray</code> được ghi lại.</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">let myArray = ['A', 'B', 'C']</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">export function handleSomeEvent(event: SomeEvent): void {<br /> // Displays : "My first value is: A, second value is: B, third value is: C"<br /> log.info(<br /> 'My first value is: {}, second value is: {}, third value is: {}',<br /> myArray,<br /> )<br />}</code></pre> <h4 class="graf graf--h4">Ghi nhật ký một mục cụ thể từ một mảng hiện có</h4> <p class="graf graf--p">Để hiển thị một giá trị cụ thể trong mảng, giá trị được lập chỉ mục phải được cung cấp.</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">export function handleSomeEvent(event: SomeEvent): void {<br /> // Displays : "My third value is C"<br /> log.info('My third value is: {}', [myArray[2]])<br />}</code></pre> <h4 class="graf graf--h4">Ghi nhật ký thông tin sự kiện</h4> <p class="graf graf--p">Ví dụ bên dưới ghi lại số khối, băm khối và băm giao dịch từ một sự kiện:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { log } from '@graphprotocol/graph-ts'</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">export function handleSomeEvent(event: SomeEvent): void {<br /> log.debug('Block number: {}, block hash: {}, transaction hash: {}', [<br /> event.block.number.toString(), // "47596000"<br /> event.block.hash.toHexString(), // "0x..."<br /> event.transaction.hash.toHexString(), // "0x..."<br /> ])<br />}</code></pre> <h3 class="graf graf--h3">IPFS API</h3> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { ipfs } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p">Hợp đồng thông minh đôi khi cố định các tệp IPFS trên chuỗi. Điều này cho phép mapping lấy các băm IPFS từ hợp đồng và đọc các tệp tương ứng từ IPFS. Dữ liệu tệp sẽ được trả lại dưới dạng <code class="markup--code markup--p-code">Bytes</code>, thường yêu cầu xử lý thêm, ví dụ: với <code class="markup--code markup--p-code">json</code> API được ghi lại sau trên trang này.</p> <p class="graf graf--p">Với một mã băm hoặc đường dẫn IPFS, việc đọc tệp từ IPFS được thực hiện như sau:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// Put this inside an event handler in the mapping<br />let hash = 'QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D'<br />let data = ipfs.cat(hash)</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// Paths like `QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/Makefile`<br />// that include files in directories are also supported<br />let path = 'QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/Makefile'<br />let data = ipfs.cat(path)</code></pre> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Lưu ý:</strong> <code class="markup--code markup--p-code">ipfs.cat</code> không phải là xác định vào lúc này. Nếu không thể truy xuất tệp qua mạng IPFS trước khi hết thời gian yêu cầu, tệp sẽ trả về <code class="markup--code markup--p-code">null</code>. Do đó, luôn có giá trị khi kiểm tra kết quả <code class="markup--code markup--p-code">null</code>.Để đảm bảo rằng các tệp có thể được truy xuất, chúng phải được ghim vào nút IPFS mà Graph Node kết nối. <a class="markup--anchor markup--p-anchor" href="https://thegraph.com/explorer/" target="_blank" rel="noopener" data-href="https://thegraph.com/explorer/">Trên dịch vụ được lưu trữ</a>, đây là <a class="markup--anchor markup--p-anchor" href="https://api.thegraph.com/ipfs" target="_blank" rel="noopener" data-href="https://api.thegraph.com/ipfs">https://api.thegraph.com/ipfs/</a>. Xem phần <a class="markup--anchor markup--p-anchor" href="https://thegraph.com/docs/define-a-subgraph#ipfs-pinning" target="_blank" rel="noopener" data-href="https://thegraph.com/docs/define-a-subgraph#ipfs-pinning">ghim IPFS</a> để biết thêm thông tin.</p> <p class="graf graf--p">Cũng có thể xử lý các tệp lớn hơn theo cách truyền trực tuyến với <code class="markup--code markup--p-code">ipfs.map</code>. Hàm mong đợi băm hoặc đường dẫn cho tệp IPFS, tên của lệnh callback và cờ để sửa đổi hành vi của nó:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { JSONValue, Value } from '@graphprotocol/graph-ts'</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">export function processItem(value: JSONValue, userData: Value): void {<br /> // See the JSONValue documentation for details on dealing<br /> // with JSON values<br /> let obj = value.toObject()<br /> let id = obj.get('id').toString()<br /> let title = obj.get('title').toString()</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code"> // Callbacks can also created entities<br /> let newItem = new Item(id)<br /> item.title = title<br /> item.parent = userData.toString() // Set parent to "parentId"<br /> item.save()<br />}</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// Put this inside an event handler in the mapping<br />ipfs.map('Qm...', 'processItem', Value.fromString('parentId'), ['json'])</code></pre> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">// Alternatively, use `ipfs.mapJSON`<br />ipfs.mapJSON('Qm...', 'processItem', Value.fromString('parentId'))</code></pre> <p class="graf graf--p">Cờ duy nhất hiện được hỗ trợ là <code class="markup--code markup--p-code">json</code>, cái phải được chuyển cho <code class="markup--code markup--p-code">ipfs.map</code>. Với cờ<code class="markup--code markup--p-code">json</code> , tệp IPFS phải bao gồm một loạt các giá trị JSON, một giá trị trên mỗi dòng. Cuộc gọi đến <code class="markup--code markup--p-code">ipfs.map</code> sẽ đọc từng dòng trong tệp, giải mã hóa nó thành một <code class="markup--code markup--p-code">JSONValue</code> và gọi lại cho từng callback . Sau đó, lệnh gọi lại có thể sử dụng các thao tác thực thể để lưu trữ dữ liệu từ <code class="markup--code markup--p-code">JSONValue</code>. Các thay đổi thực thể chỉ được lưu trữ khi trình xử lý đã gọi <code class="markup--code markup--p-code">ipfs.map</code> kết thúc thành công; trong khi chờ đợi, chúng được lưu trong bộ nhớ và kích thước của tệp <code class="markup--code markup--p-code">ipfs.map</code> có thể do đó quá trình bị hạn chế.</p> <p class="graf graf--p">Nếu thành công, <code class="markup--code markup--p-code">ipfs.map</code> trả lại <code class="markup--code markup--p-code">void</code>. Nếu bất kỳ lệnh gọi lại nào gây ra lỗi, trình xử lý đã gọi <code class="markup--code markup--p-code">ipfs.map</code> bị hủy bỏ và subgraph được đánh dấu là không thành công.</p> <h3 class="graf graf--h3">Crypto API</h3> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { crypto } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p"><code class="markup--code markup--p-code">crypto</code> APIlàm cho một hàm mật mã có sẵn để sử dụng trong mapping. Hiện tại, chỉ có một:</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">crypto.keccak256(input: ByteArray): ByteArray</code></li> </ul> <h3 class="graf graf--h3">JSON API</h3> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">import { json, JSONValueKind } from '@graphprotocol/graph-ts'</code></pre> <p class="graf graf--p">Dữ liệu JSON có thể được phân tích cú pháp bằng cách sử dụng <code class="markup--code markup--p-code">json</code> API:</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">json.fromBytes(data: Bytes): JSONValue</code> - phân tích cú pháp dữ liệu JSON từ một mảng <code class="markup--code markup--li-code">Bytes</code> </li> </ul> <p class="graf graf--p">Lớp <code class="markup--code markup--p-code">JSONValue</code> cung cấp một cách để kéo các giá trị ra khỏi một tài liệu JSON tùy ý. Vì các giá trị JSON có thể là boolean, số, mảng và hơn thế nữa, <code class="markup--code markup--p-code">JSONValue</code> đi kèm với một <code class="markup--code markup--p-code">kind</code> thuộc tính để kiểm tra loại giá trị:</p> <pre class="graf graf--pre"><code class="markup--code markup--pre-code">let value = json.fromBytes(...)<br />if (value.kind == JSONValueKind.BOOL) {<br /> ...<br />}</code></pre> <p class="graf graf--p">Ngoài ra, có một phương pháp để kiểm tra xem giá trị là <code class="markup--code markup--p-code">null</code>:</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">value.isNull(): boolean</code></li> </ul> <p class="graf graf--p">Khi loại giá trị là chắc chắn, nó có thể được chuyển đổi thành <a class="markup--anchor markup--p-anchor" href="https://thegraph.com/docs/assemblyscript-api#built-in-types" target="_blank" rel="noopener" data-href="https://thegraph.com/docs/assemblyscript-api#built-in-types">kiểu tích hợp</a> bằng một trong các phương pháp sau:</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">value.toBool(): boolean</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">value.toI64(): i64</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">value.toF64(): f64</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">value.toBigInt(): BigInt</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">value.toString(): string</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">value.toArray(): Array<JSONValue></code> - (và sau đó chuyển đổi <code class="markup--code markup--li-code">JSONValue</code> với một trong 5 phương pháp trên)</li> </ul> <h3 class="graf graf--h3">Loại tham chiếu chuyển đổi</h3> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*zXTTAvAJtQA62T7zgpnwaQ.jpeg" data-image-id="1*zXTTAvAJtQA62T7zgpnwaQ.jpeg" data-width="573" data-height="1227" /> <h3 class="graf graf--h3">Siêu dữ liệu nguồn dữ liệu</h3> <p class="graf graf--p">Bạn có thể kiểm tra địa chỉ hợp đồng, mạng và ngữ cảnh của nguồn dữ liệu đã gọi trình xử lý thông qua không gian tên <code class="markup--code markup--p-code">dataSource</code> :</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">dataSource.address(): Address</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">dataSource.network(): string</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">dataSource.context(): DataSourceContext</code></li> </ul> <h3 class="graf graf--h3">Thực thể và DataSourceContext</h3> <p class="graf graf--p">Lớp nền tảng<code class="markup--code markup--p-code">Entity</code> và lớp con<code class="markup--code markup--p-code">DataSourceContext</code> có trợ giúp để linh động thiết lập và lấy các trường:</p> <ul class="postList"> <li class="graf graf--li"><code class="markup--code markup--li-code">setString(key: string, value: string): void</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">setI32(key: string, value: i32): void</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">setBigInt(key: string, value: BigInt): void</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">setBytes(key: string, value: Bytes): void</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">setBoolean(key: string, value: bool): void</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">setBigDecimal(key, value: BigDecimal): void</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">getString(key: string): string</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">getI32(key: string): i32</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">getBigInt(key: string): BigInt</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">getBytes(key: string): Bytes</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">getBoolean(key: string): boolean</code></li> <li class="graf graf--li"><code class="markup--code markup--li-code">getBigDecimal(key: string): BigDecimal</code></li> </ul> <p class="graf graf--p"><a class="markup--anchor markup--p-anchor" href="https://thegraph.com/docs/assemblyscript-api" target="_blank" rel="noopener" data-href="https://thegraph.com/docs/assemblyscript-api"><strong class="markup--strong markup--p-strong">Source</strong></a></p> |
| json metadata | {"tags":["web3","ethereum","thegraph"],"image":["https://cdn-images-1.medium.com/max/800/1*zXTTAvAJtQA62T7zgpnwaQ.jpeg"],"links":["https://github.com/graphprotocol/graph-ts","https://github.com/AssemblyScript/assemblyscript","https://github.com/AssemblyScript/assemblyscript/wiki","https://thegraph.com/docs/define-a-subgraph#create-a-subgraph-project","http://twitter.com/graphprotocol/graph-ts","https://github.com/AssemblyScript/assemblyscript/wiki/Types","https://github.com/graphprotocol/aragon-subgraph/blob/29dd38680c5e5104d9fdc2f90e740298c67e4a31/individual-dao-subgraph/mappings/constants.ts#L51","https://github.com/graphprotocol/graph-cli","https://thegraph.com/docs/assemblyscript-api#built-in-types","https://thegraph.com/explorer/","https://api.thegraph.com/ipfs","https://thegraph.com/docs/define-a-subgraph#ipfs-pinning","https://thegraph.com/docs/assemblyscript-api"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | web3 |
| permlink | assemblyscript-api |
| title | AssemblyScript API |
| Transaction Info | Block #49490762/Trx a385ef1e9a5afb301824be9556fad8c8ac2f74f5 |
View Raw JSON Data
{
"block": 49490762,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<p class=\"graf graf--p\">Trang này ghi lại những API tích hợp có thể được sử dụng khi viết mapping cho subgraph. Hai loại API có sẵn ngay lập tức:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><a class=\"markup--anchor markup--li-anchor\" href=\"https://github.com/graphprotocol/graph-ts\" target=\"_blank\" rel=\"noopener\" data-href=\"https://github.com/graphprotocol/graph-ts\">Thư viện Graph TypeScript</a> (<code class=\"markup--code markup--li-code\">graph-ts</code>) và</li>\n<li class=\"graf graf--li\">Mã được tạo từ các tệp subgraph bởi <code class=\"markup--code markup--li-code\">graph codegen</code>.</li>\n</ul>\n<p class=\"graf graf--p\">Cũng có thể thêm các thư viện khác làm dependencies, miễn là chúng tương thích với <a class=\"markup--anchor markup--p-anchor\" href=\"https://github.com/AssemblyScript/assemblyscript\" target=\"_blank\" rel=\"noopener\" data-href=\"https://github.com/AssemblyScript/assemblyscript\">AssemblyScript</a>. Vì đây được viết bằng ngôn ngữ mapping, nên <a class=\"markup--anchor markup--p-anchor\" href=\"https://github.com/AssemblyScript/assemblyscript/wiki\" target=\"_blank\" rel=\"noopener\" data-href=\"https://github.com/AssemblyScript/assemblyscript/wiki\">AssemblyScript wiki</a> là một nguồn tốt cho ngôn ngữ và các tính năng thư viện tiêu chuẩn.</p>\n<h3 class=\"graf graf--h3\">Cài đặt</h3>\n<p class=\"graf graf--p\">Subgraph được tạo với<code class=\"markup--code markup--p-code\"><a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/docs/define-a-subgraph#create-a-subgraph-project\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/docs/define-a-subgraph#create-a-subgraph-project\">graph init</a></code> đi kèm với các dependencies được định cấu hình trước. Tất cả những gì cần thiết để cài đặt các dependencies này là chạy một trong các lệnh sau:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">yarn install # Yarn<br />npm install # NPM</code></pre>\n<p class=\"graf graf--p\">Nếu subgraph được tạo từ đầu, một trong hai lệnh sau sẽ cài đặt thư viện Graph TypeScript dưới dạng dependencies:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">yarn add --dev @graphprotocol/graph-ts # Yarn<br />npm install --save-dev @graphprotocol/graph-ts # NPM</code></pre>\n<h3 class=\"graf graf--h3\">Tham chiếu API</h3>\n<p class=\"graf graf--p\">Thư viện <a class=\"markup--anchor markup--p-anchor\" title=\"Twitter profile for @graphprotocol/graph-ts\" href=\"http://twitter.com/graphprotocol/graph-ts\" target=\"_blank\" rel=\"noopener\" data-href=\"http://twitter.com/graphprotocol/graph-ts\">@graphprotocol/graph-ts</a> cung cấp các API sau:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\">Một <code class=\"markup--code markup--li-code\">ethereum</code> API để làm việc với hợp đồng thông minh Ethereum, sự kiện, khối, giao dịch và giá trị Ethereum.</li>\n<li class=\"graf graf--li\">Một <code class=\"markup--code markup--li-code\">store</code> API để tải và lưu các thực thể từ và vào Graph Node.</li>\n<li class=\"graf graf--li\">Một <code class=\"markup--code markup--li-code\">log</code> API để ghi các thông báo vào đầu ra Graph Node và Graph Explorer.</li>\n<li class=\"graf graf--li\">Một <code class=\"markup--code markup--li-code\">ipfs</code> API để tải tệp từ IPFS.</li>\n<li class=\"graf graf--li\">Một <code class=\"markup--code markup--li-code\">json</code> API để phân tích dữ liệu JSON.</li>\n<li class=\"graf graf--li\">Một <code class=\"markup--code markup--li-code\">crypto</code> API để sử dụng các hàm mật mã.</li>\n<li class=\"graf graf--li\">Dữ liệu nguyên thủy cấp thấp để dịch giữa các hệ thống kiểu khác nhau như Ethereum, JSON, GraphQL và AssemblyScript.</li>\n</ul>\n<h3 class=\"graf graf--h3\">Các loại tích hợp</h3>\n<p class=\"graf graf--p\">Có thể tìm thấy tài liệu về các kiểu cơ sở được tích hợp trong AssemblyScript trong <a class=\"markup--anchor markup--p-anchor\" href=\"https://github.com/AssemblyScript/assemblyscript/wiki/Types\" target=\"_blank\" rel=\"noopener\" data-href=\"https://github.com/AssemblyScript/assemblyscript/wiki/Types\">AssemblyScript wiki</a>.</p>\n<p class=\"graf graf--p\">Các loại bổ sung sau được cung cấp bởi <code class=\"markup--code markup--p-code\">@graphprotocol/graph-ts</code>.</p>\n<h4 class=\"graf graf--h4\">ByteArray</h4>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { ByteArray } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">ByteArray</code> đại diện cho một mảng <code class=\"markup--code markup--p-code\">u8</code>.</p>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Xây dựng</em></p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">fromI32(x: i32): ByteArray</code> - Phân hủy <code class=\"markup--code markup--li-code\">x</code> thành bytes.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">fromHexString(hex: string): ByteArray</code> - Độ dài đầu vào phải bằng. Tiền tố bằng <code class=\"markup--code markup--li-code\">0x</code> là tùy chọn.</li>\n</ul>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Nhập chuyển đổi</em></p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">toHexString(): string</code> - Chuyển đổi thành một chuỗi hex có tiền tố là <code class=\"markup--code markup--li-code\">0x</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">toString(): string</code> - Diễn giải các byte dưới dạng chuỗi UTF-8.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">toBase58(): string</code> - Mã hóa các byte thành một chuỗi base58.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">toU32(): u32</code> - Diễn giải các byte là một phần tử nhỏ <code class=\"markup--code markup--li-code\">u32</code>. Ném trong trường hợp tràn.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">toI32(): i32</code> - Diễn giải mảng byte là một phần tử nhỏ <code class=\"markup--code markup--li-code\">i32</code>. Ném trong trường hợp tràn.</li>\n</ul>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Người điều hành</em></p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">equals(y: ByteArray): bool</code> - có thể được viết là<code class=\"markup--code markup--li-code\">x == y</code>.</li>\n</ul>\n<h4 class=\"graf graf--h4\">BigDecimal</h4>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { BigDecimal } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">BigDecimal</code> được sử dụng để biểu thị số thập phân chính xác tùy ý.</p>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Xây dựng</em></p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">constructor(bigInt: BigInt)</code> - tạo một<code class=\"markup--code markup--li-code\">BigDecimal</code> từ một<code class=\"markup--code markup--li-code\">BigInt</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">static fromString(s: string): BigDecimal</code> - phân tích cú pháp từ một chuỗi thập phân.</li>\n</ul>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Nhập chuyển đổi</em></p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">toString(): string</code> - in thành một chuỗi thập phân.</li>\n</ul>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Toán</em></p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">plus(y: BigDecimal): BigDecimal</code> - có thể viết là<code class=\"markup--code markup--li-code\">x + y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">minus(y: BigDecimal): BigDecimal</code> - có thể viết là <code class=\"markup--code markup--li-code\">x - y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">times(y: BigDecimal): BigDecimal</code> -có thể viết là <code class=\"markup--code markup--li-code\">x * y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">dividedBy(y: BigDecimal): BigDecimal</code> - có thể viết là <code class=\"markup--code markup--li-code\">x / y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">equals(y: BigDecimal): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x == y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">notEqual(y: BigDecimal): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x != y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">lt(y: BigDecimal): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x < y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">le(y: BigDecimal): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x <= y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">gt(y: BigDecimal): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x > y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">ge(y: BigDecimal): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x >= y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">neg(): BigDecimal</code> - có thể viết là <code class=\"markup--code markup--li-code\">-x</code>.</li>\n</ul>\n<h4 class=\"graf graf--h4\">BigInt</h4>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { BigInt } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">BigInt</code> được sử dụng để biểu diễn số nguyên lớn. Điều này bao gồm các giá trị Ethereum thuộc loại <code class=\"markup--code markup--p-code\">uint32</code> đến<code class=\"markup--code markup--p-code\">uint256</code> và <code class=\"markup--code markup--p-code\">int64</code> đến<code class=\"markup--code markup--p-code\">int256</code>. Mọi thứ dưới<code class=\"markup--code markup--p-code\">uint32</code>, như là<code class=\"markup--code markup--p-code\">int32</code>, <code class=\"markup--code markup--p-code\">uint24</code> hoặc <code class=\"markup--code markup--p-code\">int8</code> được biểu thị là<code class=\"markup--code markup--p-code\">i32</code>.</p>\n<p class=\"graf graf--p\">Lớp <code class=\"markup--code markup--p-code\">BigInt </code>có API sau:</p>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Xây dựng</em></p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">BigInt.fromI32(x: i32): BigInt</code> - tạo một<code class=\"markup--code markup--li-code\">BigInt</code> từ một<code class=\"markup--code markup--li-code\">i32</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">BigInt.fromUnsignedBytes(x: Bytes): BigInt</code> - Diễn giải<code class=\"markup--code markup--li-code\">bytes</code> dưới dạng một số nguyên không dấu, little-endian. Nếu đầu vào của bạn là big-endian, hãy gọi <code class=\"markup--code markup--li-code\">.reverse()</code> đầu tiên.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">BigInt.fromSignedBytes(x: Bytes): BigInt</code> - Diễn giải <code class=\"markup--code markup--li-code\">bytes</code> dưới dạng một số nguyên có dấu, little-endian. Nếu đầu vào của bạn là big-endian, hãy gọi <code class=\"markup--code markup--li-code\">.reverse()</code> đầu tiên.</li>\n</ul>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Nhập chuyển đổi</em></p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.toHex(): string</code> - biến <code class=\"markup--code markup--li-code\">BigInt</code> thành một chuỗi ký tự thập lục phân.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.toString(): string</code> - biến <code class=\"markup--code markup--li-code\">BigInt</code> thành một chuỗi số thập phân.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.toI32(): i32</code> - trả về<code class=\"markup--code markup--li-code\">BigInt</code> như là một<code class=\"markup--code markup--li-code\">i32</code>; không thành công nếu giá trị không phù hợp với <code class=\"markup--code markup--li-code\">i32</code>. Bạn nên kiểm tra trước <code class=\"markup--code markup--li-code\">x.isI32()</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.toBigDecimal(): BigDecimal</code> - chuyển đổi thành một số thập phân không có phần phân số.</li>\n</ul>\n<p class=\"graf graf--p\"><em class=\"markup--em markup--p-em\">Toán</em></p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.plus(y: BigInt): BigInt</code> - có thể viết là <code class=\"markup--code markup--li-code\">x + y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.minus(y: BigInt): BigInt</code> - có thể viết là <code class=\"markup--code markup--li-code\">x - y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.times(y: BigInt): BigInt</code> - có thể viết là <code class=\"markup--code markup--li-code\">x * y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.dividedBy(y: BigInt): BigInt</code> - có thể viết là <code class=\"markup--code markup--li-code\">x / y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.mod(y: BigInt): BigInt</code> - có thể viết là <code class=\"markup--code markup--li-code\">x % y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.equals(y: BigInt): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x == y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.notEqual(y: BigInt): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x != y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.lt(y: BigInt): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x < y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.le(y: BigInt): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x <= y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.gt(y: BigInt): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x > y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.ge(y: BigInt): bool</code> - có thể viết là <code class=\"markup--code markup--li-code\">x >= y</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.neg(): BigInt</code> - có thể viết là <code class=\"markup--code markup--li-code\">-x</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.divDecimal(y: BigDecimal): BigDecimal</code> - chia cho một số thập phân, cho một kết quả thập phân.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.isZero(): bool</code> - Thuận tiện để kiểm tra nếu số bằng 0.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.isI32(): bool</code> - Kiểm tra xem con số có khớp với<code class=\"markup--code markup--li-code\">i32</code>.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.abs(): BigInt</code> - Giá trị tuyệt đối.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">x.pow(exp: u8): BigInt</code> - Luỹ thừa.</li>\n</ul>\n<h4 class=\"graf graf--h4\">TypedMap</h4>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { TypedMap } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">TypedMap</code> có thể được sử dụng cho các cặp khóa-giá trị được lưu trữ. Hãy xem <a class=\"markup--anchor markup--p-anchor\" href=\"https://github.com/graphprotocol/aragon-subgraph/blob/29dd38680c5e5104d9fdc2f90e740298c67e4a31/individual-dao-subgraph/mappings/constants.ts#L51\" target=\"_blank\" rel=\"noopener\" data-href=\"https://github.com/graphprotocol/aragon-subgraph/blob/29dd38680c5e5104d9fdc2f90e740298c67e4a31/individual-dao-subgraph/mappings/constants.ts#L51\">ví dụ này</a>.</p>\n<p class=\"graf graf--p\">Lớp <code class=\"markup--code markup--p-code\">TypedMap</code> có API sau:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">new TypedMap<K, V>()</code> - tạo một bản đồ trống với các loại phím <code class=\"markup--code markup--li-code\">K</code> và các giá trị của loại <code class=\"markup--code markup--li-code\">T</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">map.set(key: K, value: V): void</code> - đặt giá trị của <code class=\"markup--code markup--li-code\">key</code> thành <code class=\"markup--code markup--li-code\">value</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">map.getEntry(key: K): TypedMapEntry<K, V> | null</code> - trả về cặp khóa-giá trị cho một <code class=\"markup--code markup--li-code\">key</code> hoặc <code class=\"markup--code markup--li-code\">null</code> nếu<code class=\"markup--code markup--li-code\">key</code> không tồn tại trong bản đồ</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">map.get(key: K): V | null</code> - trả về giá trị cho một <code class=\"markup--code markup--li-code\">key</code> hoặc<code class=\"markup--code markup--li-code\">null</code> nếu <code class=\"markup--code markup--li-code\">key</code> không tồn tại trong bản đồ</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">map.isSet(key: K): bool</code> - trả về<code class=\"markup--code markup--li-code\">true</code> nếu <code class=\"markup--code markup--li-code\">key</code> tồn tại trong bản đồ và <code class=\"markup--code markup--li-code\">false</code> nếu nó không</li>\n</ul>\n<h4 class=\"graf graf--h4\">Bytes</h4>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { Bytes } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">Bytes</code> được sử dụng để đại diện cho các mảng byte có độ dài tùy ý. Điều này bao gồm các giá trị Ethereum thuộc loại <code class=\"markup--code markup--p-code\">bytes</code>, <code class=\"markup--code markup--p-code\">bytes32</code> v.v..</p>\n<p class=\"graf graf--p\">Lớp<code class=\"markup--code markup--p-code\">Bytes</code> mở rộng Uint8Array của AssemblyScript và điều này hỗ trợ tất cả chức năng<code class=\"markup--code markup--p-code\">Uint8Array</code> cộng với các phương pháp mới sau:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">b.toHex()</code> - trả về một chuỗi thập lục phân đại diện cho các byte trong mảng</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">b.toString()</code> - chuyển đổi các byte trong mảng thành một chuỗi ký tự unicode</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">b.toBase58()</code> - chuyển giá trị Ethereum Byte thành mã hóa base58 (được sử dụng cho các hàm băm IPFS)</li>\n</ul>\n<h4 class=\"graf graf--h4\">Address</h4>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { Address } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">Address</code> kéo dài<code class=\"markup--code markup--p-code\">Bytes</code> đại diện cho giá trị Ethereum <code class=\"markup--code markup--p-code\">address</code> .</p>\n<p class=\"graf graf--p\">Nó thêm phương thức sau vào đầu trang <code class=\"markup--code markup--p-code\">Bytes</code> API:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">Address.fromString(s: string): Address</code> - tạo một<code class=\"markup--code markup--li-code\">Address</code> từ một chuỗi thập lục phân</li>\n</ul>\n<h3 class=\"graf graf--h3\">Lưu trữ API</h3>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { store } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\">API <code class=\"markup--code markup--p-code\">store</code> cho phép tải, lưu và loại bỏ các thực thể từ và đến lưu trữ Graph Node.</p>\n<p class=\"graf graf--p\">Các thực thể được ghi vào map lưu trữ 1-1 với loại<code class=\"markup--code markup--p-code\">@entity</code> được xác định trong lược đồ GraphQL của đồ thị con. Để làm việc với các thực thể này thuận tiện, lệnh<code class=\"markup--code markup--p-code\">graph codegen</code> được cung cấp bởi <a class=\"markup--anchor markup--p-anchor\" href=\"https://github.com/graphprotocol/graph-cli\" target=\"_blank\" rel=\"noopener\" data-href=\"https://github.com/graphprotocol/graph-cli\">Graph CLI</a> tạo ra các lớp thực thể, là các lớp con của phần mềm cài sẵn loại<code class=\"markup--code markup--p-code\">Entity</code> với bộ nhận thuộc tính và bộ định vị cho các trường trong lược đồ cũng như các phương thức để tải và lưu các thực thể này.</p>\n<h4 class=\"graf graf--h4\">Tạo thực thể</h4>\n<p class=\"graf graf--p\">Sau đây là một mẫu phổ biến để tạo các thực thể từ các sự kiện Ethereum.</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// Import the Transfer event class generated from the ERC20 ABI<br />import { Transfer as TransferEvent } from '../generated/ERC20/ERC20'</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// Import the Transfer entity type generated from the GraphQL schema<br />import { Transfer } from '../generated/schema'</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// Transfer event handler<br />export function handleTransfer(event: TransferEvent): void {<br /> // Create a Transfer entity, using the hexadecimal string representation<br /> // of the transaction hash as the entity ID<br /> let id = event.transaction.hash.toHex()<br /> let transfer = new Transfer(id)</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\"> // Set properties on the entity, using the event parameters<br /> transfer.from = event.params.from<br /> transfer.to = event.params.to<br /> transfer.amount = event.params.amount</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\"> // Save the entity to the store<br /> transfer.save()<br />}</code></pre>\n<p class=\"graf graf--p\">Khi một sự kiện<code class=\"markup--code markup--p-code\">Transfer</code> gặp phải trong khi xử lý chuỗi, nó được chuyển đến <code class=\"markup--code markup--p-code\">handleTransfer</code> xử lý sự kiện bằng cách sử dụng loại<code class=\"markup--code markup--p-code\">Transfer</code> (bí danh là <code class=\"markup--code markup--p-code\">TransferEvent</code> ở đây để tránh xung đột đặt tên với loại thực thể). Loại này cho phép truy cập dữ liệu như giao dịch mẹ của sự kiện và các tham số của nó.</p>\n<p class=\"graf graf--p\">Mỗi thực thể phải có một ID duy nhất để tránh va chạm với các thực thể khác. Việc tham số sự kiện bao gồm một mã định danh duy nhất có thể được sử dụng là điều khá phổ biến. Lưu ý: Việc sử dụng hàm băm giao dịch làm ID giả định rằng không có sự kiện nào khác trong cùng một giao dịch tạo ra các thực thể có hàm băm này làm ID.</p>\n<h4 class=\"graf graf--h4\">Tải các thực thể từ lưu trữ</h4>\n<p class=\"graf graf--p\">Nếu một thực thể đã tồn tại, nó có thể được tải từ lưu trữ với những thứ sau:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">let id = event.transaction.hash.toHex() // or however the ID is constructed<br />let transfer = Transfer.load(id)<br />if (transfer == null) {<br /> transfer = new Transfer(id)<br />}</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// Use the Transfer entity as before</code></pre>\n<p class=\"graf graf--p\">Vì thực thể có thể chưa tồn tại trong lưu trữ, phương thức <code class=\"markup--code markup--p-code\">load</code> trả về một giá trị kiểu <code class=\"markup--code markup--p-code\">Transfer | null</code>. Do đó, có thể cần phải kiểm tra trường hợp<code class=\"markup--code markup--p-code\">null</code> trước khi sử dụng giá trị.</p>\n<blockquote class=\"graf graf--blockquote\"><strong class=\"markup--strong markup--blockquote-strong\"><em class=\"markup--em markup--blockquote-em\">Ghi chú:</em></strong> Việc tải các thực thể chỉ cần thiết nếu các thay đổi được thực hiện trong mapping phụ thuộc vào dữ liệu trước đó của một thực thể. Xem phần tiếp theo để biết hai cách cập nhật các thực thể hiện có<em class=\"markup--em markup--blockquote-em\">.</em></blockquote>\n<h4 class=\"graf graf--h4\">Cập nhật các thực thể hiện có</h4>\n<p class=\"graf graf--p\">Có hai cách để cập nhật một thực thể hiện có:</p>\n<ol class=\"postList\">\n<li class=\"graf graf--li\">Tải thực thể với ví dụ: <code class=\"markup--code markup--li-code\">Transfer.load(id)</code>, đặt thuộc tính trên thực thể, sau đó <code class=\"markup--code markup--li-code\">.save()</code> nó trở lại lưu trữ.</li>\n<li class=\"graf graf--li\">Chỉ cần tạo thực thể với ví dụ: <code class=\"markup--code markup--li-code\">new Transfer(id)</code>, đặt thuộc tính trên thực thể, sau đó <code class=\"markup--code markup--li-code\">.save()</code> nó đến lưu trữ. Nếu thực thể đã tồn tại, các thay đổi sẽ được hợp nhất vào nó.</li>\n</ol>\n<p class=\"graf graf--p\">Trong hầu hết các trường hợp, việc thay đổi thuộc tính diễn ra ngay lập tức, nhờ vào các bộ thiết lập thuộc tính đã tạo:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">let transfer = new Transfer(id)<br />transfer.from = ...<br />transfer.to = ...<br />transfer.amount = ...</code></pre>\n<p class=\"graf graf--p\">Cũng có thể hủy đặt thuộc tính bằng một trong hai hướng dẫn sau:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">transfer.from.unset()<br />transfer.from = null</code></pre>\n<p class=\"graf graf--p\">Điều này chỉ hoạt động với các thuộc tính tùy chọn, tức là các thuộc tính được khai báo mà không có <code class=\"markup--code markup--p-code\">!</code> trong GraphQL. Hai ví dụ sẽ là <code class=\"markup--code markup--p-code\">owner: Bytes</code> hoặc<code class=\"markup--code markup--p-code\">amount: BigInt</code>.</p>\n<p class=\"graf graf--p\">Cập nhật các thuộc tính mảng có liên quan nhiều hơn một chút, vì việc nhận một mảng từ một thực thể sẽ tạo ra một bản sao của mảng đó. Điều này có nghĩa là các thuộc tính mảng phải được đặt lại một cách rõ ràng sau khi thay đổi mảng. Các giả định sau <code class=\"markup--code markup--p-code\">entity</code> có một trường<code class=\"markup--code markup--p-code\">numbers: [BigInt!]!</code> .</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// This won't work<br />entity.numbers.push(BigInt.fromI32(1))<br />entity.save()</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// This will work<br />let numbers = entity.numbers<br />numbers.push(BigInt.fromI32(1))<br />entity.numbers = numbers<br />entity.save()</code></pre>\n<h4 class=\"graf graf--h4\">Xóa các thực thể khỏi lưu trữ</h4>\n<p class=\"graf graf--p\">Hiện không có cách nào để xóa một thực thể thông qua các loại đã tạo. Thay vào đó, việc xóa một thực thể yêu cầu chuyển tên của loại thực thể và ID thực thể tới <code class=\"markup--code markup--p-code\">store.remove</code>:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { store } from '@graphprotocol/graph-ts'<br />...<br />let id = event.transaction.hash.toHex()<br />store.remove('Transfer', id)</code></pre>\n<h3 class=\"graf graf--h3\">Ethereum API</h3>\n<p class=\"graf graf--p\">API Ethereum cung cấp quyền truy cập vào hợp đồng thông minh, biến trạng thái công khai, chức năng hợp đồng, sự kiện, giao dịch và khối.</p>\n<h4 class=\"graf graf--h4\">Hỗ trợ các loại Ethereum</h4>\n<p class=\"graf graf--p\">Như với các thực thể, <code class=\"markup--code markup--p-code\">graph codegen</code> tạo các lớp cho tất cả các hợp đồng và sự kiện thông minh được sử dụng trong một subgraph. Đối với điều này, các ABI hợp đồng cần phải là một phần của nguồn dữ liệu trong bản kê khai subgraph. Thông thường, các tệp ABI được lưu trữ trong một thư mục<code class=\"markup--code markup--p-code\">abis/</code> .</p>\n<p class=\"graf graf--p\">Với các lớp được tạo, chuyển đổi giữa các loại Ethereum và các <a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/docs/assemblyscript-api#built-in-types\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/docs/assemblyscript-api#built-in-types\">kiểu dựng sẵn</a> diễn ra ở hậu trường để các tác giả của subgraph không phải lo lắng về chúng.</p>\n<p class=\"graf graf--p\">Ví dụ sau đây minh họa điều này. Đưa ra một lược đồ subgraph như</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">type Transfer @entity {<br /> from: Bytes!<br /> to: Bytes!<br /> amount: BigInt!<br />}</code></pre>\n<p class=\"graf graf--p\">và một <code class=\"markup--code markup--p-code\">Transfer(address,address,uint256)</code> chữ ký sự kiện trên Ethereum, <code class=\"markup--code markup--p-code\">from</code>, <code class=\"markup--code markup--p-code\">to</code> và <code class=\"markup--code markup--p-code\">amount</code> giá trị của loại <code class=\"markup--code markup--p-code\">address</code>, <code class=\"markup--code markup--p-code\">address</code> và <code class=\"markup--code markup--p-code\">uint256</code> được chuyển đổi thành <code class=\"markup--code markup--p-code\">Address</code> và <code class=\"markup--code markup--p-code\">BigInt</code>, cho phép chúng được chuyển cho <code class=\"markup--code markup--p-code\">Bytes!</code> và <code class=\"markup--code markup--p-code\">BigInt!</code> thuộc tính của thực thể<code class=\"markup--code markup--p-code\">Transfer</code>:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">let id = event.transaction.hash.toHex()<br />let transfer = new Transfer(id)<br />transfer.from = event.params.from<br />transfer.to = event.params.to<br />transfer.amount = event.params.amount<br />transfer.save()</code></pre>\n<h4 class=\"graf graf--h4\">Sự kiện và dữ liệu khối / giao dịch</h4>\n<p class=\"graf graf--p\">Các sự kiện Ethereum được chuyển đến xử lý sự kiện, chẳng hạn nhưsự kiện<code class=\"markup--code markup--p-code\">Transfer</code> trong các ví dụ trước, không chỉ cung cấp quyền truy cập vào các tham số sự kiện mà còn cho giao dịch mẹ của chúng và khối mà chúng là một phần. Dữ liệu sau đây có thể được lấy từ cá thể<code class=\"markup--code markup--p-code\">event</code> (các lớp này là một phần của <code class=\"markup--code markup--p-code\">ethereum</code> mô-đun trong <code class=\"markup--code markup--p-code\">graph-ts</code>):</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">class Event {<br /> address: Address<br /> logIndex: BigInt<br /> transactionLogIndex: BigInt<br /> logType: string | null<br /> block: Block<br /> transaction: Transaction<br /> parameters: Array<EventParam><br />}</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">class Block {<br /> hash: Bytes<br /> parentHash: Bytes<br /> unclesHash: Bytes<br /> author: Address<br /> stateRoot: Bytes<br /> transactionsRoot: Bytes<br /> receiptsRoot: Bytes<br /> number: BigInt<br /> gasUsed: BigInt<br /> gasLimit: BigInt<br /> timestamp: BigInt<br /> difficulty: BigInt<br /> totalDifficulty: BigInt<br /> size: BigInt | null<br />}</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">class Transaction {<br /> hash: Bytes<br /> index: BigInt<br /> from: Address<br /> to: Address | null<br /> value: BigInt<br /> gasUsed: BigInt<br /> gasPrice: BigInt<br /> input: Bytes<br />}</code></pre>\n<h4 class=\"graf graf--h4\">Quyền truy cập vào trạng thái hợp đồng thông minh</h4>\n<p class=\"graf graf--p\">Mã được tạo bởi <code class=\"markup--code markup--p-code\">graph codegen</code> cũng bao gồm các lớp cho các hợp đồng thông minh được sử dụng trong subgraph. Chúng có thể được sử dụng để truy cập các biến trạng thái công khai và gọi các hàm của hợp đồng tại khối hiện tại.</p>\n<p class=\"graf graf--p\">Một mô hình phổ biến là truy cập vào hợp đồng mà từ đó một sự kiện bắt nguồn. Điều này đạt được với đoạn mã sau:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// Import the generated contract class<br />import { ERC20Contract } from '../generated/ERC20Contract/ERC20Contract'<br />// Import the generated entity class<br />import { Transfer } from '../generated/schema'</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">export function handleTransfer(event: Transfer) {<br /> // Bind the contract to the address that emitted the event<br /> let contract = ERC20Contract.bind(event.address)</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\"> // Access state variables and functions by calling them<br /> let erc20Symbol = contract.symbol()<br />}</code></pre>\n<p class=\"graf graf--p\">Miễn là<code class=\"markup--code markup--p-code\">ERC20Contract</code> trên Ethereum có một chức năng chỉ đọc công khai được gọi là <code class=\"markup--code markup--p-code\">symbol</code>, nó có thể được gọi với<code class=\"markup--code markup--p-code\">.symbol()</code>. Đối với các biến trạng thái công khai, một phương thức có cùng tên được tạo tự động.</p>\n<p class=\"graf graf--p\">Bất kỳ hợp đồng nào khác là một phần của tiểu mục đều có thể được nhập từ mã đã tạo và có thể được ràng buộc với một địa chỉ hợp lệ.</p>\n<h3 class=\"graf graf--h3\">Ghi nhật ký và gỡ lỗi</h3>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { log } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">log</code>API cho phép các subgraph ghi thông tin vào đầu ra chuẩn của Graph Node cũng như Graph Explorer. Tin nhắn có thể được ghi lại bằng các cấp độ nhật ký khác nhau. Cú pháp chuỗi định dạng cơ bản được cung cấp để soạn thông báo nhật ký từ đối số.</p>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">log</code> API bao gồm các chức năng sau:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">log.debug(fmt: string, args: Array<string>): void</code> - ghi lại một thông báo gỡ lỗi.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">log.info(fmt: string, args: Array<string>): void</code> - ghi lại một tin nhắn thông tin.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">log.warning(fmt: string, args: Array<string>): void</code> - ghi lại một cảnh báo.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">log.error(fmt: string, args: Array<string>): void</code> - ghi lại một thông báo lỗi.</li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">log.critical(fmt: string, args: Array<string>): void</code> - ghi lại một thông điệp quan trọng và kết thúc subgraph.</li>\n</ul>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">log</code> API nhận một chuỗi định dạng và một mảng các giá trị chuỗi. Sau đó, nó thay thế trình giữ chỗ bằng các giá trị chuỗi từ mảng. Trình giữ chỗ {} đầu tiên được thay thế bằng giá trị đầu tiên trong mảng, trình giữ chỗ {} thứ hai được thay thế bằng giá trị thứ hai, v.v.</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">log.info('Message to be displayed: {}, {}, {}', [<br /> value.toString(),<br /> anotherValue.toString(),<br /> 'already a string',<br />])</code></pre>\n<h3 class=\"graf graf--h3\">Ghi nhật ký một hoặc nhiều giá trị</h3>\n<h4 class=\"graf graf--h4\">Ghi nhật ký một giá trị</h4>\n<p class=\"graf graf--p\">Trong ví dụ dưới đây, giá trị chuỗi “A” được chuyển vào một mảng để trở thành<code class=\"markup--code markup--p-code\">['A']</code> trước khi được đăng nhập:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">let myValue = 'A'</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">export function handleSomeEvent(event: SomeEvent): void {<br /> // Displays : \"My value is: A\"<br /> log.info('My value is: {}', [myValue])<br />}</code></pre>\n<h4 class=\"graf graf--h4\">Ghi nhật ký một mục nhập từ một mảng hiện có</h4>\n<p class=\"graf graf--p\">Trong ví dụ dưới đây, chỉ giá trị đầu tiên của mảng đối số được ghi lại, mặc dù mảng chứa ba giá trị.</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">let myArray = ['A', 'B', 'C']</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">export function handleSomeEvent(event: SomeEvent): void {<br /> // Displays : \"My value is: A\" (Even though three values are passed to `log.info`)<br /> log.info('My value is: {}', myArray)<br />}</code></pre>\n<h4 class=\"graf graf--h4\">Ghi nhật ký nhiều mục từ một mảng hiện có</h4>\n<p class=\"graf graf--p\">Mỗi mục nhập trong mảng đối số yêu cầu trình giữ chỗ riêng của nó <code class=\"markup--code markup--p-code\">{}</code> trong chuỗi thông báo nhật ký. Ví dụ dưới đây chứa ba trình giữ chỗ <code class=\"markup--code markup--p-code\">{}</code> trong thông báo nhật ký. Do đó, cả ba giá trị trong <code class=\"markup--code markup--p-code\">myArray</code> được ghi lại.</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">let myArray = ['A', 'B', 'C']</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">export function handleSomeEvent(event: SomeEvent): void {<br /> // Displays : \"My first value is: A, second value is: B, third value is: C\"<br /> log.info(<br /> 'My first value is: {}, second value is: {}, third value is: {}',<br /> myArray,<br /> )<br />}</code></pre>\n<h4 class=\"graf graf--h4\">Ghi nhật ký một mục cụ thể từ một mảng hiện có</h4>\n<p class=\"graf graf--p\">Để hiển thị một giá trị cụ thể trong mảng, giá trị được lập chỉ mục phải được cung cấp.</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">export function handleSomeEvent(event: SomeEvent): void {<br /> // Displays : \"My third value is C\"<br /> log.info('My third value is: {}', [myArray[2]])<br />}</code></pre>\n<h4 class=\"graf graf--h4\">Ghi nhật ký thông tin sự kiện</h4>\n<p class=\"graf graf--p\">Ví dụ bên dưới ghi lại số khối, băm khối và băm giao dịch từ một sự kiện:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { log } from '@graphprotocol/graph-ts'</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">export function handleSomeEvent(event: SomeEvent): void {<br /> log.debug('Block number: {}, block hash: {}, transaction hash: {}', [<br /> event.block.number.toString(), // \"47596000\"<br /> event.block.hash.toHexString(), // \"0x...\"<br /> event.transaction.hash.toHexString(), // \"0x...\"<br /> ])<br />}</code></pre>\n<h3 class=\"graf graf--h3\">IPFS API</h3>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { ipfs } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\">Hợp đồng thông minh đôi khi cố định các tệp IPFS trên chuỗi. Điều này cho phép mapping lấy các băm IPFS từ hợp đồng và đọc các tệp tương ứng từ IPFS. Dữ liệu tệp sẽ được trả lại dưới dạng <code class=\"markup--code markup--p-code\">Bytes</code>, thường yêu cầu xử lý thêm, ví dụ: với <code class=\"markup--code markup--p-code\">json</code> API được ghi lại sau trên trang này.</p>\n<p class=\"graf graf--p\">Với một mã băm hoặc đường dẫn IPFS, việc đọc tệp từ IPFS được thực hiện như sau:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// Put this inside an event handler in the mapping<br />let hash = 'QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D'<br />let data = ipfs.cat(hash)</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// Paths like `QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/Makefile`<br />// that include files in directories are also supported<br />let path = 'QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/Makefile'<br />let data = ipfs.cat(path)</code></pre>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\">Lưu ý:</strong> <code class=\"markup--code markup--p-code\">ipfs.cat</code> không phải là xác định vào lúc này. Nếu không thể truy xuất tệp qua mạng IPFS trước khi hết thời gian yêu cầu, tệp sẽ trả về <code class=\"markup--code markup--p-code\">null</code>. Do đó, luôn có giá trị khi kiểm tra kết quả <code class=\"markup--code markup--p-code\">null</code>.Để đảm bảo rằng các tệp có thể được truy xuất, chúng phải được ghim vào nút IPFS mà Graph Node kết nối. <a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/explorer/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/explorer/\">Trên dịch vụ được lưu trữ</a>, đây là <a class=\"markup--anchor markup--p-anchor\" href=\"https://api.thegraph.com/ipfs\" target=\"_blank\" rel=\"noopener\" data-href=\"https://api.thegraph.com/ipfs\">https://api.thegraph.com/ipfs/</a>. Xem phần <a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/docs/define-a-subgraph#ipfs-pinning\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/docs/define-a-subgraph#ipfs-pinning\">ghim IPFS</a> để biết thêm thông tin.</p>\n<p class=\"graf graf--p\">Cũng có thể xử lý các tệp lớn hơn theo cách truyền trực tuyến với <code class=\"markup--code markup--p-code\">ipfs.map</code>. Hàm mong đợi băm hoặc đường dẫn cho tệp IPFS, tên của lệnh callback và cờ để sửa đổi hành vi của nó:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { JSONValue, Value } from '@graphprotocol/graph-ts'</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">export function processItem(value: JSONValue, userData: Value): void {<br /> // See the JSONValue documentation for details on dealing<br /> // with JSON values<br /> let obj = value.toObject()<br /> let id = obj.get('id').toString()<br /> let title = obj.get('title').toString()</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\"> // Callbacks can also created entities<br /> let newItem = new Item(id)<br /> item.title = title<br /> item.parent = userData.toString() // Set parent to \"parentId\"<br /> item.save()<br />}</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// Put this inside an event handler in the mapping<br />ipfs.map('Qm...', 'processItem', Value.fromString('parentId'), ['json'])</code></pre>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">// Alternatively, use `ipfs.mapJSON`<br />ipfs.mapJSON('Qm...', 'processItem', Value.fromString('parentId'))</code></pre>\n<p class=\"graf graf--p\">Cờ duy nhất hiện được hỗ trợ là <code class=\"markup--code markup--p-code\">json</code>, cái phải được chuyển cho <code class=\"markup--code markup--p-code\">ipfs.map</code>. Với cờ<code class=\"markup--code markup--p-code\">json</code> , tệp IPFS phải bao gồm một loạt các giá trị JSON, một giá trị trên mỗi dòng. Cuộc gọi đến <code class=\"markup--code markup--p-code\">ipfs.map</code> sẽ đọc từng dòng trong tệp, giải mã hóa nó thành một <code class=\"markup--code markup--p-code\">JSONValue</code> và gọi lại cho từng callback . Sau đó, lệnh gọi lại có thể sử dụng các thao tác thực thể để lưu trữ dữ liệu từ <code class=\"markup--code markup--p-code\">JSONValue</code>. Các thay đổi thực thể chỉ được lưu trữ khi trình xử lý đã gọi <code class=\"markup--code markup--p-code\">ipfs.map</code> kết thúc thành công; trong khi chờ đợi, chúng được lưu trong bộ nhớ và kích thước của tệp <code class=\"markup--code markup--p-code\">ipfs.map</code> có thể do đó quá trình bị hạn chế.</p>\n<p class=\"graf graf--p\">Nếu thành công, <code class=\"markup--code markup--p-code\">ipfs.map</code> trả lại <code class=\"markup--code markup--p-code\">void</code>. Nếu bất kỳ lệnh gọi lại nào gây ra lỗi, trình xử lý đã gọi <code class=\"markup--code markup--p-code\">ipfs.map</code> bị hủy bỏ và subgraph được đánh dấu là không thành công.</p>\n<h3 class=\"graf graf--h3\">Crypto API</h3>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { crypto } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">crypto</code> APIlàm cho một hàm mật mã có sẵn để sử dụng trong mapping. Hiện tại, chỉ có một:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">crypto.keccak256(input: ByteArray): ByteArray</code></li>\n</ul>\n<h3 class=\"graf graf--h3\">JSON API</h3>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">import { json, JSONValueKind } from '@graphprotocol/graph-ts'</code></pre>\n<p class=\"graf graf--p\">Dữ liệu JSON có thể được phân tích cú pháp bằng cách sử dụng <code class=\"markup--code markup--p-code\">json</code> API:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">json.fromBytes(data: Bytes): JSONValue</code> - phân tích cú pháp dữ liệu JSON từ một mảng <code class=\"markup--code markup--li-code\">Bytes</code> </li>\n</ul>\n<p class=\"graf graf--p\">Lớp <code class=\"markup--code markup--p-code\">JSONValue</code> cung cấp một cách để kéo các giá trị ra khỏi một tài liệu JSON tùy ý. Vì các giá trị JSON có thể là boolean, số, mảng và hơn thế nữa, <code class=\"markup--code markup--p-code\">JSONValue</code> đi kèm với một <code class=\"markup--code markup--p-code\">kind</code> thuộc tính để kiểm tra loại giá trị:</p>\n<pre class=\"graf graf--pre\"><code class=\"markup--code markup--pre-code\">let value = json.fromBytes(...)<br />if (value.kind == JSONValueKind.BOOL) {<br /> ...<br />}</code></pre>\n<p class=\"graf graf--p\">Ngoài ra, có một phương pháp để kiểm tra xem giá trị là <code class=\"markup--code markup--p-code\">null</code>:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">value.isNull(): boolean</code></li>\n</ul>\n<p class=\"graf graf--p\">Khi loại giá trị là chắc chắn, nó có thể được chuyển đổi thành <a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/docs/assemblyscript-api#built-in-types\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/docs/assemblyscript-api#built-in-types\">kiểu tích hợp</a> bằng một trong các phương pháp sau:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">value.toBool(): boolean</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">value.toI64(): i64</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">value.toF64(): f64</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">value.toBigInt(): BigInt</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">value.toString(): string</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">value.toArray(): Array<JSONValue></code> - (và sau đó chuyển đổi <code class=\"markup--code markup--li-code\">JSONValue</code> với một trong 5 phương pháp trên)</li>\n</ul>\n<h3 class=\"graf graf--h3\">Loại tham chiếu chuyển đổi</h3>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*zXTTAvAJtQA62T7zgpnwaQ.jpeg\" data-image-id=\"1*zXTTAvAJtQA62T7zgpnwaQ.jpeg\" data-width=\"573\" data-height=\"1227\" />\n<h3 class=\"graf graf--h3\">Siêu dữ liệu nguồn dữ liệu</h3>\n<p class=\"graf graf--p\">Bạn có thể kiểm tra địa chỉ hợp đồng, mạng và ngữ cảnh của nguồn dữ liệu đã gọi trình xử lý thông qua không gian tên <code class=\"markup--code markup--p-code\">dataSource</code> :</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">dataSource.address(): Address</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">dataSource.network(): string</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">dataSource.context(): DataSourceContext</code></li>\n</ul>\n<h3 class=\"graf graf--h3\">Thực thể và DataSourceContext</h3>\n<p class=\"graf graf--p\">Lớp nền tảng<code class=\"markup--code markup--p-code\">Entity</code> và lớp con<code class=\"markup--code markup--p-code\">DataSourceContext</code> có trợ giúp để linh động thiết lập và lấy các trường:</p>\n<ul class=\"postList\">\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">setString(key: string, value: string): void</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">setI32(key: string, value: i32): void</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">setBigInt(key: string, value: BigInt): void</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">setBytes(key: string, value: Bytes): void</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">setBoolean(key: string, value: bool): void</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">setBigDecimal(key, value: BigDecimal): void</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">getString(key: string): string</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">getI32(key: string): i32</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">getBigInt(key: string): BigInt</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">getBytes(key: string): Bytes</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">getBoolean(key: string): boolean</code></li>\n<li class=\"graf graf--li\"><code class=\"markup--code markup--li-code\">getBigDecimal(key: string): BigDecimal</code></li>\n</ul>\n<p class=\"graf graf--p\"><a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/docs/assemblyscript-api\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/docs/assemblyscript-api\"><strong class=\"markup--strong markup--p-strong\">Source</strong></a></p>",
"json_metadata": "{\"tags\":[\"web3\",\"ethereum\",\"thegraph\"],\"image\":[\"https://cdn-images-1.medium.com/max/800/1*zXTTAvAJtQA62T7zgpnwaQ.jpeg\"],\"links\":[\"https://github.com/graphprotocol/graph-ts\",\"https://github.com/AssemblyScript/assemblyscript\",\"https://github.com/AssemblyScript/assemblyscript/wiki\",\"https://thegraph.com/docs/define-a-subgraph#create-a-subgraph-project\",\"http://twitter.com/graphprotocol/graph-ts\",\"https://github.com/AssemblyScript/assemblyscript/wiki/Types\",\"https://github.com/graphprotocol/aragon-subgraph/blob/29dd38680c5e5104d9fdc2f90e740298c67e4a31/individual-dao-subgraph/mappings/constants.ts#L51\",\"https://github.com/graphprotocol/graph-cli\",\"https://thegraph.com/docs/assemblyscript-api#built-in-types\",\"https://thegraph.com/explorer/\",\"https://api.thegraph.com/ipfs\",\"https://thegraph.com/docs/define-a-subgraph#ipfs-pinning\",\"https://thegraph.com/docs/assemblyscript-api\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "web3",
"permlink": "assemblyscript-api",
"title": "AssemblyScript API"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-16T06:11:18",
"trx_id": "a385ef1e9a5afb301824be9556fad8c8ac2f74f5",
"trx_in_block": 1,
"virtual_op": 0
}2020/12/09 09:56:00
2020/12/09 09:56:00
| author | nhanhoang91 |
| body | Bước đầu tiên khi học những điều mới là tìm ra một hướng dẫn tốt để giúp bạn đẩy nhanh cuộc hành trình của mình.</p> <p class="graf graf--p">Theo tôi, một khởi đầu tốt là sử dụng 3 tài nguyên sau:</p> <ol class="postList"> <li class="graf graf--li"><a class="markup--anchor markup--li-anchor" href="https://thegraph.com/docs" target="_blank" rel="noopener nofollow noopener" data-href="https://thegraph.com/docs">https://thegraph.com/docs</a></li> <li class="graf graf--li"><a class="markup--anchor markup--li-anchor" href="https://www.youtube.com/watch?v=e5OwjDao3MA" target="_blank" rel="noopener nofollow noopener" data-href="https://www.youtube.com/watch?v=e5OwjDao3MA">https://www.youtube.com/watch?v=e5OwjDao3MA</a></li> <li class="graf graf--li"><a class="markup--anchor markup--li-anchor" href="https://youtu.be/coa0Vw47qNc" target="_blank" rel="noopener nofollow noopener" data-href="https://youtu.be/coa0Vw47qNc">https://youtu.be/coa0Vw47qNc</a></li> </ol> <p class="graf graf--p">Tuy nhiên, nếu bạn không rành tiếng Anh hoặc thích cảm thụ thông tin từng bước qua văn bản và hình ảnh thì có lẽ bài viết của tôi có thể hữu ích với bạn.</p> </div> </div> Sau khi đọc phần giới thiệu (<a class="markup--anchor markup--p-anchor" href="https://thegraph.com/docs/introduction" target="_blank" rel="nofollow noopener" data-href="https://thegraph.com/docs/introduction">https://thegraph.com/docs/introduction</a>), bạn sẽ hiểu cơ bản về Graph là gì và nó hoạt động như thế nào.</p> <p class="graf graf--p">Trong phần tiếp theo (<a class="markup--anchor markup--p-anchor" href="https://thegraph.com/docs/quick-start" target="_blank" rel="nofollow noopener" data-href="https://thegraph.com/docs/quick-start">https://thegraph.com/docs/quick-start</a>), bạn được lựa chọn cách tạo một Subgraph: bằng cách tự tạo môi trường cục bộ (phù hợp hơn cho các đồ thị con lớn và các lập trình viên chuyên nghiệp) hoặc bằng cách sử dụng dịch vụ Lưu trữ từ nhóm The Graph nằm trong bộ nhớ đám mây (con đường này dễ dàng hơn nhiều cho người mới bắt đầu và David Kajpust trong video này khuyên bạn nên sử dụng nó)<br />Trong bài viết này, chúng tôi sẽ phân tích chính xác phương pháp thứ hai.</p> </div> </div> Để sử dụng dịch vụ lưu trữ từ nhóm The Graph, bạn cần phải thông qua ủy quyền trên trang web của họ (ủy quyền có thể thông qua tài khoản Github của bạn, vì vậy nếu bạn chưa có, trước tiên hãy tạo nó)</p> <p class="graf graf--p">Sau khi ủy quyền, bạn sẽ có thể thêm các Đồ thị con mới</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*u36VDmhdfO1KlO-k.png" data-image-id="0*u36VDmhdfO1KlO-k.png" data-width="1400" data-height="425" data-is-featured="true" /> hình ảnh sử dụng một ví dụ từ video: ETHOnline 🛠️ Đồ thị: Xây dựng đồ thị con trên đồ thị <p class="graf graf--p">Khi bạn nhấp vào nút được đánh dấu, bạn sẽ nhận được một cửa sổ để thêm một Biểu đồ con với danh sách các tham số</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*rlLOUWrpMNF5VkQeJaBD6g.jpeg" data-image-id="1*rlLOUWrpMNF5VkQeJaBD6g.jpeg" data-width="604" data-height="915" /> <p class="graf graf--p">Sau khi điền vào các trường bắt buộc và nhấp vào nút Tạo Đồ thị con, bạn có thể chuyển đến trang của đồthị con đã tạo nhưng chưa được mở rộng của mình</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*5ix26V_NJlmdMxtP.png" data-image-id="0*5ix26V_NJlmdMxtP.png" data-width="1400" data-height="559" /> <p class="graf graf--p">Dưới các hộp được đánh số 1,2,3 là các lệnh ẩn cần được thực hiện trong thiết bị đầu cuối trên máy tính của bạn để</p> <blockquote class="graf graf--blockquote"><em class="markup--em markup--blockquote-em">1. </em>Tải về<em class="markup--em markup--blockquote-em"> Graph CLI</em></blockquote> <blockquote class="graf graf--blockquote"><em class="markup--em markup--blockquote-em">2. </em>Tạo trang con</blockquote> <blockquote class="graf graf--blockquote"><em class="markup--em markup--blockquote-em">3. </em>Mở rộng Subgraph trên Node<em class="markup--em markup--blockquote-em"> The Graph</em></blockquote> <p class="graf graf--p">Các thiết bị đầu cuối khác nhau có thể được sử dụng cho các công việc tiếp theo.</p> <p class="graf graf--p">Các đại diện của nhóm Graph trên macOS sử dụng iTerm2: <a class="markup--anchor markup--p-anchor" href="https://iterm2.com/" target="_blank" rel="noopener nofollow noopener" data-href="https://iterm2.com/">https://iterm2.com/</a></p> <p class="graf graf--p">Đối với chủ sở hữu Windows, về nguyên tắc, phiên bản Windows PowerShell cơ bản có thể là đủ (tốt, hoặc bạn có thể chọn một trong các phiên bản tương tự iTerm được cung cấp: <a class="markup--anchor markup--p-anchor" href="https://alternativeto.net/software/iterm2/?platform=windows" target="_blank" rel="noopener nofollow noopener" data-href="https://alternativeto.net/software/iterm2/?platform=windows">https://alternativeto.net/software/iterm2/?platform=windows</a>)</p> </div> </div> <p class="graf graf--p">Bên dưới hộp 1, bạn sẽ thấy một thông báo gợi ý rằng bạn cài đặt Graph CLI bằng cách sử dụng npm hoặc yarn trực tiếp từ cửa sổ đầu cuối của bạn:</p> <pre class="graf graf--pre">$ npm install -g @graphprotocol/graph-cli$ yarn global add @graphprotocol/graph-cli</pre> <pre class="graf graf--pre graf--empty"> </pre> <p class="graf graf--p">Nhưng trước tiên, bạn có thể cần phải cài đặt chính Yarn để tiếp tục làm việc với nó.</p> <p class="graf graf--p">Nếu bạn đang sử dụng Mac OS, bạn có thể sử dụng liên kết sau: <a class="markup--anchor markup--p-anchor" href="https://gist.github.com/rcugut/46904124d198a9dbd430abe88ebf849b" target="_blank" rel="noopener nofollow noopener" data-href="https://gist.github.com/rcugut/46904124d198a9dbd430abe88ebf849b">https://gist.github.com/rcugut/46904124d198a9dbd430abe88ebf849b</a></p> <p class="graf graf--p">Nếu bạn là người dùng Windows, bạn có thể xem tại đây: <a class="markup--anchor markup--p-anchor" href="https://classic.yarnpkg.com/en/docs/install/#windows-stable" target="_blank" rel="noopener nofollow noopener" data-href="https://classic.yarnpkg.com/en/docs/install/#windows-stable">https://classic.yarnpkg.com/en/docs/install/#windows-stable</a></p> <blockquote class="graf graf--blockquote">LƯU ý QUAN TRỌNG CHO NGƯỜI SỬ DỤNG WINDOWS</blockquote> <blockquote class="graf graf--blockquote">Tôi nhận được rất nhiều câu hỏi từ người dùng Windows. thiết bị đầu cuối của họ đưa ra nhiều loại lỗi khác nhau. Tôi khuyên bạn nên thử TẤT CẢ các bước trong sách <a class="markup--anchor markup--blockquote-anchor" href="https://yoember.com/nodejs/the-best-way-to-install-node-js-with-yarn/" target="_blank" rel="noopener" data-href="https://yoember.com/nodejs/the-best-way-to-install-node-js-with-yarn/">hướng dẫn này</a> trước khi thực hiện các lệnh khác. Lưu ý quan trọng khi thực hiện theo các hướng dẫn sau: đừng quên chạy trình cài đặt thay mặt cho Quản trị viên, đừng quên chọn hộp về việc thiết lập các thuộc tính bổ sung cho Node.js</blockquote> <p class="graf graf--p">Nhật ký dòng lệnh của lệnh này trong terminal được hiển thị bên dưới:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*gZWebsX0eoRm3-Uu.png" data-image-id="0*gZWebsX0eoRm3-Uu.png" data-width="1093" data-height="564" /> </div> </div> <p class="graf graf--p">Sau khi cài đặt thành công Graph CLI, chúng ta tiến hành tạo chính Subgraph. Một lần nữa, hoạt động này có thể được thực hiện theo 2 cách: 1) từ hợp đồng Ethereum hiện có 2) từ một ví dụ hiện có từ nhóm The Graph</p> <p class="graf graf--p">Trong bài viết này, chúng ta sẽ xem xét phương pháp thứ 2. Đây là một cách đơn giản để tạo một trang con Gravatar, nhưng nó cũng sẽ hữu ích cho việc tạo một Trang con của riêng bạn bằng cách lấy mã chương trình soạn sẵn, bạn sẽ chỉnh sửa đơn giản sau.</p> <blockquote class="graf graf--blockquote">Lưu ý: Chúng tôi đã đề cập đến phương pháp thứ nhất trong một bài viết riêng. Tuy nhiên, tôi thực sự khuyên bạn nên đọc trước và cố gắng đi qua tất cả các bước của bài viết này, trước khi đọc phần thứ hai.</blockquote> <p class="graf graf--p">Bằng cách nhấp vào hộp 2 trên trang của Trang con đã tạo nhưng chưa được mở rộng, bạn sẽ thấy cửa sổ sau</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*EnujLrc567bJ1PcJ.png" data-image-id="0*EnujLrc567bJ1PcJ.png" data-width="1400" data-height="657" /> <p class="graf graf--p">Bạn cần sao chép lệnh</p> <p class="graf graf--p"><code class="markup--code markup--p-code">$ graph init --from-example <GITHUB_USERNAME>/<SUBGRAPH_NAME> <DIRECTORY></code></p> <p class="graf graf--p">và dán nó vào cửa sổ đầu cuối của bạn thay thế các biến sau:</p> <blockquote class="graf graf--blockquote"><em class="markup--em markup--blockquote-em"><GITHUB_USERNAME> </em>thay đổi tên người dùng của bạn</blockquote> <blockquote class="graf graf--blockquote"><em class="markup--em markup--blockquote-em"><SUBGRAPH_NAME> </em>thay đổi tên của Đồ thị con bạn đã chỉ định</blockquote> <blockquote class="graf graf--blockquote"><em class="markup--em markup--blockquote-em"><DIRECTORY> </em>Là tùy chọn. Nói chung, đây là tên của thư mục mà đồ thị con của bạn được tạo. Theo mặc định, bạn phải đăng ký lại Tên của Đoạn con của mình.</blockquote> <p class="graf graf--p">Việc thực hiện chức năng trên trong terminal sẽ như thế này (terminal sẽ yêu cầu bạn xác nhận lại tên của Subgraph và thư mục mà bạn muốn cài đặt nó:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*JoNuSWN304e30ftD.png" data-image-id="0*JoNuSWN304e30ftD.png" data-width="598" data-height="179" /> Ví dụ từ video: ETHOnline 🛠️ The Graph: Building Subgraphs on The Graph </div> </div> <p class="graf graf--p">Sau khi tạo thành công Subgraph, bạn cần triển khai nó lên máy chủ lưu trữ The Graph. Điều này có thể được thực hiện bằng cách sử dụng các lệnh được ẩn trong hộp 3 trên trang của Đồ thị con đã tạo nhưng chưa mở rộng của bạn</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*s1kg12XYMeCWouz3.png" data-image-id="0*s1kg12XYMeCWouz3.png" data-width="1400" data-height="585" /> <p class="graf graf--p">Để thực hiện lệnh đầu tiên</p> <pre class="graf graf--pre">graph auth <a class="markup--anchor markup--pre-anchor" href="https://api.thegraph.com/deploy/" target="_blank" rel="noopener" data-href="https://api.thegraph.com/deploy/">https://api.thegraph.com/deploy/</a> <ACCESS_TOKEN></pre> <pre class="graf graf--pre graf--empty"> </pre> <p class="graf graf--p">Bạn cần thay thế <access-token> bằng mã thông báo truy cập của Subgraph, được phản ánh trong cùng một trang ở trên</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*Z8sW2LiRLjznI0Sn.png" data-image-id="0*Z8sW2LiRLjznI0Sn.png" data-width="1400" data-height="560" /> <p class="graf graf--p">Khi thực hiện chức năng trên trong terminal, bạn sẽ nhận được cửa sổ sau:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*QAX1KTiEAZJ7bIyg.png" data-image-id="0*QAX1KTiEAZJ7bIyg.png" data-width="944" data-height="79" /> <p class="graf graf--p">Lệnh được triển khai đã tạo một thư mục có tên giống hệt với Subgraph của bạn. Để vào một thư mục, hãy thực hiện lệnh “cd <tên thư mục>” và sau đó sử dụng lệnh: “ls”. Kết quả là bạn sẽ thấy nội dung trong thư mục của mình:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*YuiOuoQRfZxoWtKB.png" data-image-id="0*YuiOuoQRfZxoWtKB.png" data-width="836" data-height="109" /> <p class="graf graf--p">Bên trong thư mục, bạn có thể thấy các tệp khác nhau (Giấy phép, abis, readme, v.v.), nhưng để hiểu rõ hơn về mã, bạn có thể mở thư mục này trong Visual Studio. Để thực hiện việc này, bạn cần triển khai lệnh: “code.”, Lệnh này sẽ khởi chạy chương trình trên với thư mục Subgraph của bạn đã được mở trong đó (lưu ý, bạn phải cài đặt Visual Studio trước. Nếu bạn chưa cài đặt chương trình này khi cài đặt Node.js, bạn có thể tải xuống cô ấy từ <a class="markup--anchor markup--p-anchor" href="https://visualstudio.microsoft.com/ru/" target="_blank" rel="noopener" data-href="https://visualstudio.microsoft.com/ru/">trang web chính thức</a>)</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*NMfilnXTVxS-UEHh.png" data-image-id="0*NMfilnXTVxS-UEHh.png" data-width="1400" data-height="622" /> <p class="graf graf--p">Bước tiếp theo là thực hiện lệnh “<code class="markup--code markup--p-code">yarn codegen</code>“ hoặc là “<code class="markup--code markup--p-code">npm run codegen”</code>, mà ở chế độ TỰ ĐỘNG sẽ tạo các tệp cần thiết cho Mục con của chúng tôi</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*rSmLIJjvTHHK-FIQ.png" data-image-id="0*rSmLIJjvTHHK-FIQ.png" data-width="1197" data-height="952" /> <p class="graf graf--p">Lệnh này làm gì và tại sao nó lại hữu ích? Nó lấy dữ liệu từ hợp đồng thông minh abis trên mạng Ethereum, trông giống như sau:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*478ZZ_hNba_PX1D6.png" data-image-id="0*478ZZ_hNba_PX1D6.png" data-width="1400" data-height="552" /> <p class="graf graf--p">và tạo mã dễ đọc hơn nhiều, cài đặt Setters và Getters , tạo tệp và thực hiện các thay đổi đối với Mapping, Schema và Subgraph.yaml (Tệp kê khai), giúp làm việc với Subgraph dễ dàng hơn</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*J_utp_613UUjGE-B.png" data-image-id="0*J_utp_613UUjGE-B.png" data-width="1290" data-height="1155" /> <p class="graf graf--p">Bước cuối cùng của việc triển khai Subgraph của chúng tôi trên Graph Hosting sẽ là hoạt động triển khai chính nó:</p> <pre class="graf graf--pre">graph deploy \<br /> --debug \<br /> --node <a class="markup--anchor markup--pre-anchor" href="https://api.thegraph.com/deploy/" target="_blank" rel="noopener" data-href="https://api.thegraph.com/deploy/">https://api.thegraph.com/deploy/</a> \<br /> --ipfs <a class="markup--anchor markup--pre-anchor" href="https://api.thegraph.com/ipfs/" target="_blank" rel="noopener" data-href="https://api.thegraph.com/ipfs/">https://api.thegraph.com/ipfs/</a> \<br /> <SUBGRAPH_NAME></pre> <pre class="graf graf--pre graf--empty"> </pre> <p class="graf graf--p">Đừng quên thay thế <SUBGRAPH_NAME> bằng tên của Chuyên mục con của chúng ta</p> <blockquote class="graf graf--blockquote">Lưu ý: Trong Discord, 1 trong những người quản lý đã đề xuất chạy lệnh trước đó cùng với mã thông báo truy cập và điều này đã giải quyết được vấn đề của những người dùng khác</blockquote> <pre class="graf graf--pre">graph deploy - access-token <Ваш Access token>\<br /> - debug \<br /> - node <a class="markup--anchor markup--pre-anchor" href="https://api.thegraph.com/deploy/" target="_blank" rel="noopener nofollow noopener" data-href="https://api.thegraph.com/deploy/">https://api.thegraph.com/deploy/</a> \<br /> - ipfs <a class="markup--anchor markup--pre-anchor" href="https://api.thegraph.com/ipfs/" target="_blank" rel="noopener nofollow noopener" data-href="https://api.thegraph.com/ipfs/">https://api.thegraph.com/ipfs/</a> \<br /> <github/subgraph_name></pre> <pre class="graf graf--pre graf--empty"> </pre> <p class="graf graf--p">Vì nhiều người mắc phải 1 và cùng một lỗi khi thực hiện các lệnh trên, tôi khuyên bạn nên viết đoạn mã trước đó thành 1 dòng. Dấu “\” cần được loại bỏ (nó chỉ có nghĩa là tính liên tục của mã). Tổng cộng, mã của bạn sẽ trông như thế này</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*8YJEYOunhK0VWgje.png" data-image-id="0*8YJEYOunhK0VWgje.png" data-width="1400" data-height="35" /> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*nAxTcAkHYImPZM5z.png" data-image-id="0*nAxTcAkHYImPZM5z.png" data-width="1176" data-height="1565" /> chụp màn hình từ video <p class="graf graf--p">Như chúng ta có thể thấy, sau khi hoàn thành việc triển khai lệnh, chúng tôi nhận được một liên kết đến trang của Subgraph mà chúng tôi đã tạo, được triển khai cho dịch vụ Lưu trữ The Graph và hiện tại có lẽ đã được lập chỉ mục bởi nó. Bằng cách nhấp vào liên kết, chúng ta sẽ thấy trang đã quen thuộc với chúng ta:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*GB9KfwXbaUw91SsX.png" data-image-id="0*GB9KfwXbaUw91SsX.png" data-width="1400" data-height="720" /> <p class="graf graf--p">Vì vậy, khi quá trình đồng bộ hóa hoàn tất, chúng tôi sẽ có PlayGround GraphQL trong bảng điều khiển của chúng tôi trong Graph Explorer, sẵn sàng thực hiện các truy vấn bằng cách sử dụng Subgraph mới mà chúng tôi vừa tạo</p> </div> </div> Các bước tiếp theo</h3> <p class="graf graf--p graf--empty"> </p> <p class="graf graf--p">Cần hiểu rằng cho đến nay chúng ta mới chỉ học cách tạo và đặt một Subgraph mẫu đơn giản. Để kết thúc với một Đoạn con thực hiện các chức năng mà chúng ta quan tâm cụ thể, chúng ta sẽ phải sửa đổi mã của Đoạn con này, suy nghĩ xem chính xác những gì chúng ta muốn lấy trong SchemaQL của Đoạn con của chúng ta và thực hiện các thay đổi đối với Mapping, Manifest, v.v. Chức năng “yarn codegen”, đã được chúng tôi nghiên cứu và ứng dụng thành công, sẽ trở thành một trợ giúp quan trọng ở đây.</p> <p class="graf graf--p">Ngoài ra, thay vì sửa chữa Subgraph thử nghiệm đã tạo, bạn có thể để nó như cũ và với kinh nghiệm của mình, tạo một Subgraph mới trực tiếp từ hợp đồng Ethereum. Bạn có thể đọc về việc tạo Đồ thị con trực tiếp từ hợp đồng Ethereum tại đây. Nếu bạn vẫn muốn sửa đổi Subgraph đã được tạo và không tạo mới, thì bạn có thể tiếp tục đọc bài viết này.</p> <p class="graf graf--p">Hãy tưởng tượng một cách có điều kiện rằng chúng ta muốn sử dụng dữ liệu từ Uniswap trên các cặp được giao dịch ở đó. Chúng ta có thể truy cập trang của họ trên GitHub, tải xuống tệp ABI của họ từ đó hoặc chỉ cần sao chép tất cả mã từ trang này</p> ><img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*RPkbQTiRb7xWnFx8.png" data-image-id="0*RPkbQTiRb7xWnFx8.png" data-width="1400" data-height="843" /> <p class="graf graf--p">Sau đó, thay thế tệp abi Gravity.json bằng tệp abi đã tải xuống (hoặc chỉ cần xóa tất cả mã và dán mã đã sao chép từ GitHub) vào Visual Studio trong Subgraph của chúng ta</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*OpLx1cT3RlNlrcZM.png" data-image-id="0*OpLx1cT3RlNlrcZM.png" data-width="1400" data-height="954" /> <p class="graf graf--p">Lưu ý: Nếu bạn chỉ đang thay đổi mã, bạn cần đổi tên tệp abi. Thay vì Gravity.json, hãy viết Pair.json</p> <p class="graf graf--p">Sau đó, chúng ta cần thay đổi Nguồn dữ liệu trong đồ thị con của chúng ta thành tên ABI mới</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*aB2FYJXFFYhqWVEl.png" data-image-id="0*aB2FYJXFFYhqWVEl.png" data-width="1349" data-height="1124" /> <p class="graf graf--p">Sau đó, chúng tôi chạy lệnh “yarn codegen”, lệnh này sẽ tự động viết lại các Mapping, Manifest và các tệp khác của đồ thị con của chúng tôi, có tính đến dữ liệu đầu vào mới</p> <p class="graf graf--p">Mặc dù “yarn codegen” là một chức năng hữu ích, nó không phải là cây đũa thần và nó sẽ không hoàn toàn làm tất cả công việc cho bạn. Để tạo một Subgraph thực sự tốt và hữu ích từ mẫu hiện tại, bạn sẽ phải dành thời gian nghiên cứu GraphQL, hợp đồng Ethereum mà bạn quan tâm và làm quen sâu hơn với tài liệu Graph (<a class="markup--anchor markup--p-anchor" href="https://thegraph.com/docs" target="_blank" rel="nofollow noopener" data-href="https://thegraph.com/docs">https://thegraph.com/docs</a>). Nhưng nếu bạn đã đối phó thành công với việc tạo và triển khai Đồ thị con thử nghiệm này, thì bạn đã sẵn sàng để thực hiện những Subgraph phức tạp hơn!</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong"><p><a href="https://leopoldheg.medium.com/%D0%BF%D0%B5%D1%80%D0%B2%D1%8B%D0%B5-%D1%88%D0%B0%D0%B3%D0%B8-%D0%B3%D1%83%D0%BC%D0%B0%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%B8%D1%8F-%D0%B2-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D1%81%D0%B0%D0%B1%D0%B3%D1%80%D0%B0%D1%84%D0%B0-f585825757e6"><strong>Nguồn</strong></a></p></p> </div> </div> </div> </div> |
| json metadata | {"tags":["thegraph","graphprotocol","eth","ethereum","web3"],"users":["graphprotocol"],"image":["https://cdn-images-1.medium.com/max/800/0*u36VDmhdfO1KlO-k.png","https://cdn-images-1.medium.com/max/800/1*rlLOUWrpMNF5VkQeJaBD6g.jpeg","https://cdn-images-1.medium.com/max/800/0*5ix26V_NJlmdMxtP.png","https://cdn-images-1.medium.com/max/800/0*gZWebsX0eoRm3-Uu.png","https://cdn-images-1.medium.com/max/800/0*EnujLrc567bJ1PcJ.png","https://cdn-images-1.medium.com/max/800/0*JoNuSWN304e30ftD.png","https://cdn-images-1.medium.com/max/800/0*s1kg12XYMeCWouz3.png","https://cdn-images-1.medium.com/max/800/0*Z8sW2LiRLjznI0Sn.png","https://cdn-images-1.medium.com/max/800/0*QAX1KTiEAZJ7bIyg.png","https://cdn-images-1.medium.com/max/800/0*YuiOuoQRfZxoWtKB.png","https://cdn-images-1.medium.com/max/800/0*NMfilnXTVxS-UEHh.png","https://cdn-images-1.medium.com/max/800/0*rSmLIJjvTHHK-FIQ.png","https://cdn-images-1.medium.com/max/800/0*478ZZ_hNba_PX1D6.png","https://cdn-images-1.medium.com/max/800/0*J_utp_613UUjGE-B.png","https://cdn-images-1.medium.com/max/800/0*8YJEYOunhK0VWgje.png","https://cdn-images-1.medium.com/max/800/0*nAxTcAkHYImPZM5z.png","https://cdn-images-1.medium.com/max/800/0*GB9KfwXbaUw91SsX.png","https://cdn-images-1.medium.com/max/800/0*RPkbQTiRb7xWnFx8.png","https://cdn-images-1.medium.com/max/800/0*OpLx1cT3RlNlrcZM.png","https://cdn-images-1.medium.com/max/800/0*aB2FYJXFFYhqWVEl.png"],"links":["https://thegraph.com/docs","https://www.youtube.com/watch?v=e5OwjDao3MA","https://youtu.be/coa0Vw47qNc","https://thegraph.com/docs/introduction","https://thegraph.com/docs/quick-start","https://iterm2.com/","https://alternativeto.net/software/iterm2/?platform=windows","https://gist.github.com/rcugut/46904124d198a9dbd430abe88ebf849b","https://classic.yarnpkg.com/en/docs/install/#windows-stable","https://yoember.com/nodejs/the-best-way-to-install-node-js-with-yarn/","https://api.thegraph.com/deploy/","https://visualstudio.microsoft.com/ru/","https://api.thegraph.com/ipfs/","https://leopoldheg.medium.com/%D0%BF%D0%B5%D1%80%D0%B2%D1%8B%D0%B5-%D1%88%D0%B0%D0%B3%D0%B8-%D0%B3%D1%83%D0%BC%D0%B0%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%B8%D1%8F-%D0%B2-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D1%81%D0%B0%D0%B1%D0%B3%D1%80%D0%B0%D1%84%D0%B0-f585825757e6"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | thegraph |
| permlink | cac-buoc-dau-tien-cua-trong-viec-tao-subgraph-cua-rieng-ban-danh-cho-nguoi-moi-bat-dau |
| title | Các bước đầu tiên của trong việc tạo Subgraph của riêng bạn dành cho người mới bắt đầu |
| Transaction Info | Block #49297251/Trx 30e545959eb76b34060129fbb9504a3b7ddd7b6c |
View Raw JSON Data
{
"block": 49297251,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "Bước đầu tiên khi học những điều mới là tìm ra một hướng dẫn tốt để giúp bạn đẩy nhanh cuộc hành trình của mình.</p>\n<p class=\"graf graf--p\">Theo tôi, một khởi đầu tốt là sử dụng 3 tài nguyên sau:</p>\n<ol class=\"postList\">\n<li class=\"graf graf--li\"><a class=\"markup--anchor markup--li-anchor\" href=\"https://thegraph.com/docs\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://thegraph.com/docs\">https://thegraph.com/docs</a></li>\n<li class=\"graf graf--li\"><a class=\"markup--anchor markup--li-anchor\" href=\"https://www.youtube.com/watch?v=e5OwjDao3MA\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://www.youtube.com/watch?v=e5OwjDao3MA\">https://www.youtube.com/watch?v=e5OwjDao3MA</a></li>\n<li class=\"graf graf--li\"><a class=\"markup--anchor markup--li-anchor\" href=\"https://youtu.be/coa0Vw47qNc\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://youtu.be/coa0Vw47qNc\">https://youtu.be/coa0Vw47qNc</a></li>\n</ol>\n<p class=\"graf graf--p\">Tuy nhiên, nếu bạn không rành tiếng Anh hoặc thích cảm thụ thông tin từng bước qua văn bản và hình ảnh thì có lẽ bài viết của tôi có thể hữu ích với bạn.</p>\n</div>\n</div>\nSau khi đọc phần giới thiệu (<a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/docs/introduction\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https://thegraph.com/docs/introduction\">https://thegraph.com/docs/introduction</a>), bạn sẽ hiểu cơ bản về Graph là gì và nó hoạt động như thế nào.</p>\n<p class=\"graf graf--p\">Trong phần tiếp theo (<a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/docs/quick-start\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https://thegraph.com/docs/quick-start\">https://thegraph.com/docs/quick-start</a>), bạn được lựa chọn cách tạo một Subgraph: bằng cách tự tạo môi trường cục bộ (phù hợp hơn cho các đồ thị con lớn và các lập trình viên chuyên nghiệp) hoặc bằng cách sử dụng dịch vụ Lưu trữ từ nhóm The Graph nằm trong bộ nhớ đám mây (con đường này dễ dàng hơn nhiều cho người mới bắt đầu và David Kajpust trong video này khuyên bạn nên sử dụng nó)<br />Trong bài viết này, chúng tôi sẽ phân tích chính xác phương pháp thứ hai.</p>\n</div>\n</div>\nĐể sử dụng dịch vụ lưu trữ từ nhóm The Graph, bạn cần phải thông qua ủy quyền trên trang web của họ (ủy quyền có thể thông qua tài khoản Github của bạn, vì vậy nếu bạn chưa có, trước tiên hãy tạo nó)</p>\n<p class=\"graf graf--p\">Sau khi ủy quyền, bạn sẽ có thể thêm các Đồ thị con mới</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*u36VDmhdfO1KlO-k.png\" data-image-id=\"0*u36VDmhdfO1KlO-k.png\" data-width=\"1400\" data-height=\"425\" data-is-featured=\"true\" />\nhình ảnh sử dụng một ví dụ từ video: ETHOnline 🛠️ Đồ thị: Xây dựng đồ thị con trên đồ thị\n<p class=\"graf graf--p\">Khi bạn nhấp vào nút được đánh dấu, bạn sẽ nhận được một cửa sổ để thêm một Biểu đồ con với danh sách các tham số</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*rlLOUWrpMNF5VkQeJaBD6g.jpeg\" data-image-id=\"1*rlLOUWrpMNF5VkQeJaBD6g.jpeg\" data-width=\"604\" data-height=\"915\" />\n<p class=\"graf graf--p\">Sau khi điền vào các trường bắt buộc và nhấp vào nút Tạo Đồ thị con, bạn có thể chuyển đến trang của đồthị con đã tạo nhưng chưa được mở rộng của mình</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*5ix26V_NJlmdMxtP.png\" data-image-id=\"0*5ix26V_NJlmdMxtP.png\" data-width=\"1400\" data-height=\"559\" />\n<p class=\"graf graf--p\">Dưới các hộp được đánh số 1,2,3 là các lệnh ẩn cần được thực hiện trong thiết bị đầu cuối trên máy tính của bạn để</p>\n<blockquote class=\"graf graf--blockquote\"><em class=\"markup--em markup--blockquote-em\">1. </em>Tải về<em class=\"markup--em markup--blockquote-em\"> Graph CLI</em></blockquote>\n<blockquote class=\"graf graf--blockquote\"><em class=\"markup--em markup--blockquote-em\">2. </em>Tạo trang con</blockquote>\n<blockquote class=\"graf graf--blockquote\"><em class=\"markup--em markup--blockquote-em\">3. </em>Mở rộng Subgraph trên Node<em class=\"markup--em markup--blockquote-em\"> The Graph</em></blockquote>\n<p class=\"graf graf--p\">Các thiết bị đầu cuối khác nhau có thể được sử dụng cho các công việc tiếp theo.</p>\n<p class=\"graf graf--p\">Các đại diện của nhóm Graph trên macOS sử dụng iTerm2: <a class=\"markup--anchor markup--p-anchor\" href=\"https://iterm2.com/\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://iterm2.com/\">https://iterm2.com/</a></p>\n<p class=\"graf graf--p\">Đối với chủ sở hữu Windows, về nguyên tắc, phiên bản Windows PowerShell cơ bản có thể là đủ (tốt, hoặc bạn có thể chọn một trong các phiên bản tương tự iTerm được cung cấp: <a class=\"markup--anchor markup--p-anchor\" href=\"https://alternativeto.net/software/iterm2/?platform=windows\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://alternativeto.net/software/iterm2/?platform=windows\">https://alternativeto.net/software/iterm2/?platform=windows</a>)</p>\n</div>\n</div>\n<p class=\"graf graf--p\">Bên dưới hộp 1, bạn sẽ thấy một thông báo gợi ý rằng bạn cài đặt Graph CLI bằng cách sử dụng npm hoặc yarn trực tiếp từ cửa sổ đầu cuối của bạn:</p>\n<pre class=\"graf graf--pre\">$ npm install -g @graphprotocol/graph-cli$ yarn global add @graphprotocol/graph-cli</pre>\n<pre class=\"graf graf--pre graf--empty\"> </pre>\n<p class=\"graf graf--p\">Nhưng trước tiên, bạn có thể cần phải cài đặt chính Yarn để tiếp tục làm việc với nó.</p>\n<p class=\"graf graf--p\">Nếu bạn đang sử dụng Mac OS, bạn có thể sử dụng liên kết sau: <a class=\"markup--anchor markup--p-anchor\" href=\"https://gist.github.com/rcugut/46904124d198a9dbd430abe88ebf849b\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://gist.github.com/rcugut/46904124d198a9dbd430abe88ebf849b\">https://gist.github.com/rcugut/46904124d198a9dbd430abe88ebf849b</a></p>\n<p class=\"graf graf--p\">Nếu bạn là người dùng Windows, bạn có thể xem tại đây: <a class=\"markup--anchor markup--p-anchor\" href=\"https://classic.yarnpkg.com/en/docs/install/#windows-stable\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://classic.yarnpkg.com/en/docs/install/#windows-stable\">https://classic.yarnpkg.com/en/docs/install/#windows-stable</a></p>\n<blockquote class=\"graf graf--blockquote\">LƯU ý QUAN TRỌNG CHO NGƯỜI SỬ DỤNG WINDOWS</blockquote>\n<blockquote class=\"graf graf--blockquote\">Tôi nhận được rất nhiều câu hỏi từ người dùng Windows. thiết bị đầu cuối của họ đưa ra nhiều loại lỗi khác nhau. Tôi khuyên bạn nên thử TẤT CẢ các bước trong sách <a class=\"markup--anchor markup--blockquote-anchor\" href=\"https://yoember.com/nodejs/the-best-way-to-install-node-js-with-yarn/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://yoember.com/nodejs/the-best-way-to-install-node-js-with-yarn/\">hướng dẫn này</a> trước khi thực hiện các lệnh khác. Lưu ý quan trọng khi thực hiện theo các hướng dẫn sau: đừng quên chạy trình cài đặt thay mặt cho Quản trị viên, đừng quên chọn hộp về việc thiết lập các thuộc tính bổ sung cho Node.js</blockquote>\n<p class=\"graf graf--p\">Nhật ký dòng lệnh của lệnh này trong terminal được hiển thị bên dưới:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*gZWebsX0eoRm3-Uu.png\" data-image-id=\"0*gZWebsX0eoRm3-Uu.png\" data-width=\"1093\" data-height=\"564\" />\n</div>\n</div>\n<p class=\"graf graf--p\">Sau khi cài đặt thành công Graph CLI, chúng ta tiến hành tạo chính Subgraph. Một lần nữa, hoạt động này có thể được thực hiện theo 2 cách: 1) từ hợp đồng Ethereum hiện có 2) từ một ví dụ hiện có từ nhóm The Graph</p>\n<p class=\"graf graf--p\">Trong bài viết này, chúng ta sẽ xem xét phương pháp thứ 2. Đây là một cách đơn giản để tạo một trang con Gravatar, nhưng nó cũng sẽ hữu ích cho việc tạo một Trang con của riêng bạn bằng cách lấy mã chương trình soạn sẵn, bạn sẽ chỉnh sửa đơn giản sau.</p>\n<blockquote class=\"graf graf--blockquote\">Lưu ý: Chúng tôi đã đề cập đến phương pháp thứ nhất trong một bài viết riêng. Tuy nhiên, tôi thực sự khuyên bạn nên đọc trước và cố gắng đi qua tất cả các bước của bài viết này, trước khi đọc phần thứ hai.</blockquote>\n<p class=\"graf graf--p\">Bằng cách nhấp vào hộp 2 trên trang của Trang con đã tạo nhưng chưa được mở rộng, bạn sẽ thấy cửa sổ sau</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*EnujLrc567bJ1PcJ.png\" data-image-id=\"0*EnujLrc567bJ1PcJ.png\" data-width=\"1400\" data-height=\"657\" />\n<p class=\"graf graf--p\">Bạn cần sao chép lệnh</p>\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\">$ graph init --from-example <GITHUB_USERNAME>/<SUBGRAPH_NAME> <DIRECTORY></code></p>\n<p class=\"graf graf--p\">và dán nó vào cửa sổ đầu cuối của bạn thay thế các biến sau:</p>\n<blockquote class=\"graf graf--blockquote\"><em class=\"markup--em markup--blockquote-em\"><GITHUB_USERNAME> </em>thay đổi tên người dùng của bạn</blockquote>\n<blockquote class=\"graf graf--blockquote\"><em class=\"markup--em markup--blockquote-em\"><SUBGRAPH_NAME> </em>thay đổi tên của Đồ thị con bạn đã chỉ định</blockquote>\n<blockquote class=\"graf graf--blockquote\"><em class=\"markup--em markup--blockquote-em\"><DIRECTORY> </em>Là tùy chọn. Nói chung, đây là tên của thư mục mà đồ thị con của bạn được tạo. Theo mặc định, bạn phải đăng ký lại Tên của Đoạn con của mình.</blockquote>\n<p class=\"graf graf--p\">Việc thực hiện chức năng trên trong terminal sẽ như thế này (terminal sẽ yêu cầu bạn xác nhận lại tên của Subgraph và thư mục mà bạn muốn cài đặt nó:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*JoNuSWN304e30ftD.png\" data-image-id=\"0*JoNuSWN304e30ftD.png\" data-width=\"598\" data-height=\"179\" />\nVí dụ từ video: ETHOnline 🛠️ The Graph: Building Subgraphs on The Graph\n</div>\n</div>\n<p class=\"graf graf--p\">Sau khi tạo thành công Subgraph, bạn cần triển khai nó lên máy chủ lưu trữ The Graph. Điều này có thể được thực hiện bằng cách sử dụng các lệnh được ẩn trong hộp 3 trên trang của Đồ thị con đã tạo nhưng chưa mở rộng của bạn</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*s1kg12XYMeCWouz3.png\" data-image-id=\"0*s1kg12XYMeCWouz3.png\" data-width=\"1400\" data-height=\"585\" />\n<p class=\"graf graf--p\">Để thực hiện lệnh đầu tiên</p>\n<pre class=\"graf graf--pre\">graph auth <a class=\"markup--anchor markup--pre-anchor\" href=\"https://api.thegraph.com/deploy/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://api.thegraph.com/deploy/\">https://api.thegraph.com/deploy/</a> <ACCESS_TOKEN></pre>\n<pre class=\"graf graf--pre graf--empty\"> </pre>\n<p class=\"graf graf--p\">Bạn cần thay thế <access-token> bằng mã thông báo truy cập của Subgraph, được phản ánh trong cùng một trang ở trên</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*Z8sW2LiRLjznI0Sn.png\" data-image-id=\"0*Z8sW2LiRLjznI0Sn.png\" data-width=\"1400\" data-height=\"560\" />\n<p class=\"graf graf--p\">Khi thực hiện chức năng trên trong terminal, bạn sẽ nhận được cửa sổ sau:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*QAX1KTiEAZJ7bIyg.png\" data-image-id=\"0*QAX1KTiEAZJ7bIyg.png\" data-width=\"944\" data-height=\"79\" />\n<p class=\"graf graf--p\">Lệnh được triển khai đã tạo một thư mục có tên giống hệt với Subgraph của bạn. Để vào một thư mục, hãy thực hiện lệnh “cd <tên thư mục>” và sau đó sử dụng lệnh: “ls”. Kết quả là bạn sẽ thấy nội dung trong thư mục của mình:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*YuiOuoQRfZxoWtKB.png\" data-image-id=\"0*YuiOuoQRfZxoWtKB.png\" data-width=\"836\" data-height=\"109\" />\n<p class=\"graf graf--p\">Bên trong thư mục, bạn có thể thấy các tệp khác nhau (Giấy phép, abis, readme, v.v.), nhưng để hiểu rõ hơn về mã, bạn có thể mở thư mục này trong Visual Studio. Để thực hiện việc này, bạn cần triển khai lệnh: “code.”, Lệnh này sẽ khởi chạy chương trình trên với thư mục Subgraph của bạn đã được mở trong đó (lưu ý, bạn phải cài đặt Visual Studio trước. Nếu bạn chưa cài đặt chương trình này khi cài đặt Node.js, bạn có thể tải xuống cô ấy từ <a class=\"markup--anchor markup--p-anchor\" href=\"https://visualstudio.microsoft.com/ru/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://visualstudio.microsoft.com/ru/\">trang web chính thức</a>)</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*NMfilnXTVxS-UEHh.png\" data-image-id=\"0*NMfilnXTVxS-UEHh.png\" data-width=\"1400\" data-height=\"622\" />\n<p class=\"graf graf--p\">Bước tiếp theo là thực hiện lệnh “<code class=\"markup--code markup--p-code\">yarn codegen</code>“ hoặc là “<code class=\"markup--code markup--p-code\">npm run codegen”</code>, mà ở chế độ TỰ ĐỘNG sẽ tạo các tệp cần thiết cho Mục con của chúng tôi</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*rSmLIJjvTHHK-FIQ.png\" data-image-id=\"0*rSmLIJjvTHHK-FIQ.png\" data-width=\"1197\" data-height=\"952\" />\n<p class=\"graf graf--p\">Lệnh này làm gì và tại sao nó lại hữu ích? Nó lấy dữ liệu từ hợp đồng thông minh abis trên mạng Ethereum, trông giống như sau:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*478ZZ_hNba_PX1D6.png\" data-image-id=\"0*478ZZ_hNba_PX1D6.png\" data-width=\"1400\" data-height=\"552\" />\n<p class=\"graf graf--p\">và tạo mã dễ đọc hơn nhiều, cài đặt Setters và Getters , tạo tệp và thực hiện các thay đổi đối với Mapping, Schema và Subgraph.yaml (Tệp kê khai), giúp làm việc với Subgraph dễ dàng hơn</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*J_utp_613UUjGE-B.png\" data-image-id=\"0*J_utp_613UUjGE-B.png\" data-width=\"1290\" data-height=\"1155\" />\n<p class=\"graf graf--p\">Bước cuối cùng của việc triển khai Subgraph của chúng tôi trên Graph Hosting sẽ là hoạt động triển khai chính nó:</p>\n<pre class=\"graf graf--pre\">graph deploy \\<br /> --debug \\<br /> --node <a class=\"markup--anchor markup--pre-anchor\" href=\"https://api.thegraph.com/deploy/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://api.thegraph.com/deploy/\">https://api.thegraph.com/deploy/</a> \\<br /> --ipfs <a class=\"markup--anchor markup--pre-anchor\" href=\"https://api.thegraph.com/ipfs/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://api.thegraph.com/ipfs/\">https://api.thegraph.com/ipfs/</a> \\<br /> <SUBGRAPH_NAME></pre>\n<pre class=\"graf graf--pre graf--empty\"> </pre>\n<p class=\"graf graf--p\">Đừng quên thay thế <SUBGRAPH_NAME> bằng tên của Chuyên mục con của chúng ta</p>\n<blockquote class=\"graf graf--blockquote\">Lưu ý: Trong Discord, 1 trong những người quản lý đã đề xuất chạy lệnh trước đó cùng với mã thông báo truy cập và điều này đã giải quyết được vấn đề của những người dùng khác</blockquote>\n<pre class=\"graf graf--pre\">graph deploy - access-token <Ваш Access token>\\<br /> - debug \\<br /> - node <a class=\"markup--anchor markup--pre-anchor\" href=\"https://api.thegraph.com/deploy/\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://api.thegraph.com/deploy/\">https://api.thegraph.com/deploy/</a> \\<br /> - ipfs <a class=\"markup--anchor markup--pre-anchor\" href=\"https://api.thegraph.com/ipfs/\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://api.thegraph.com/ipfs/\">https://api.thegraph.com/ipfs/</a> \\<br /> <github/subgraph_name></pre>\n<pre class=\"graf graf--pre graf--empty\"> </pre>\n<p class=\"graf graf--p\">Vì nhiều người mắc phải 1 và cùng một lỗi khi thực hiện các lệnh trên, tôi khuyên bạn nên viết đoạn mã trước đó thành 1 dòng. Dấu “\\” cần được loại bỏ (nó chỉ có nghĩa là tính liên tục của mã). Tổng cộng, mã của bạn sẽ trông như thế này</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*8YJEYOunhK0VWgje.png\" data-image-id=\"0*8YJEYOunhK0VWgje.png\" data-width=\"1400\" data-height=\"35\" />\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*nAxTcAkHYImPZM5z.png\" data-image-id=\"0*nAxTcAkHYImPZM5z.png\" data-width=\"1176\" data-height=\"1565\" />\nchụp màn hình từ video\n<p class=\"graf graf--p\">Như chúng ta có thể thấy, sau khi hoàn thành việc triển khai lệnh, chúng tôi nhận được một liên kết đến trang của Subgraph mà chúng tôi đã tạo, được triển khai cho dịch vụ Lưu trữ The Graph và hiện tại có lẽ đã được lập chỉ mục bởi nó. Bằng cách nhấp vào liên kết, chúng ta sẽ thấy trang đã quen thuộc với chúng ta:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*GB9KfwXbaUw91SsX.png\" data-image-id=\"0*GB9KfwXbaUw91SsX.png\" data-width=\"1400\" data-height=\"720\" />\n<p class=\"graf graf--p\">Vì vậy, khi quá trình đồng bộ hóa hoàn tất, chúng tôi sẽ có PlayGround GraphQL trong bảng điều khiển của chúng tôi trong Graph Explorer, sẵn sàng thực hiện các truy vấn bằng cách sử dụng Subgraph mới mà chúng tôi vừa tạo</p>\n</div>\n</div>\nCác bước tiếp theo</h3>\n<p class=\"graf graf--p graf--empty\"> </p>\n<p class=\"graf graf--p\">Cần hiểu rằng cho đến nay chúng ta mới chỉ học cách tạo và đặt một Subgraph mẫu đơn giản. Để kết thúc với một Đoạn con thực hiện các chức năng mà chúng ta quan tâm cụ thể, chúng ta sẽ phải sửa đổi mã của Đoạn con này, suy nghĩ xem chính xác những gì chúng ta muốn lấy trong SchemaQL của Đoạn con của chúng ta và thực hiện các thay đổi đối với Mapping, Manifest, v.v. Chức năng “yarn codegen”, đã được chúng tôi nghiên cứu và ứng dụng thành công, sẽ trở thành một trợ giúp quan trọng ở đây.</p>\n<p class=\"graf graf--p\">Ngoài ra, thay vì sửa chữa Subgraph thử nghiệm đã tạo, bạn có thể để nó như cũ và với kinh nghiệm của mình, tạo một Subgraph mới trực tiếp từ hợp đồng Ethereum. Bạn có thể đọc về việc tạo Đồ thị con trực tiếp từ hợp đồng Ethereum tại đây. Nếu bạn vẫn muốn sửa đổi Subgraph đã được tạo và không tạo mới, thì bạn có thể tiếp tục đọc bài viết này.</p>\n<p class=\"graf graf--p\">Hãy tưởng tượng một cách có điều kiện rằng chúng ta muốn sử dụng dữ liệu từ Uniswap trên các cặp được giao dịch ở đó. Chúng ta có thể truy cập trang của họ trên GitHub, tải xuống tệp ABI của họ từ đó hoặc chỉ cần sao chép tất cả mã từ trang này</p>\n><img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*RPkbQTiRb7xWnFx8.png\" data-image-id=\"0*RPkbQTiRb7xWnFx8.png\" data-width=\"1400\" data-height=\"843\" />\n<p class=\"graf graf--p\">Sau đó, thay thế tệp abi Gravity.json bằng tệp abi đã tải xuống (hoặc chỉ cần xóa tất cả mã và dán mã đã sao chép từ GitHub) vào Visual Studio trong Subgraph của chúng ta</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*OpLx1cT3RlNlrcZM.png\" data-image-id=\"0*OpLx1cT3RlNlrcZM.png\" data-width=\"1400\" data-height=\"954\" />\n<p class=\"graf graf--p\">Lưu ý: Nếu bạn chỉ đang thay đổi mã, bạn cần đổi tên tệp abi. Thay vì Gravity.json, hãy viết Pair.json</p>\n<p class=\"graf graf--p\">Sau đó, chúng ta cần thay đổi Nguồn dữ liệu trong đồ thị con của chúng ta thành tên ABI mới</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*aB2FYJXFFYhqWVEl.png\" data-image-id=\"0*aB2FYJXFFYhqWVEl.png\" data-width=\"1349\" data-height=\"1124\" />\n<p class=\"graf graf--p\">Sau đó, chúng tôi chạy lệnh “yarn codegen”, lệnh này sẽ tự động viết lại các Mapping, Manifest và các tệp khác của đồ thị con của chúng tôi, có tính đến dữ liệu đầu vào mới</p>\n<p class=\"graf graf--p\">Mặc dù “yarn codegen” là một chức năng hữu ích, nó không phải là cây đũa thần và nó sẽ không hoàn toàn làm tất cả công việc cho bạn. Để tạo một Subgraph thực sự tốt và hữu ích từ mẫu hiện tại, bạn sẽ phải dành thời gian nghiên cứu GraphQL, hợp đồng Ethereum mà bạn quan tâm và làm quen sâu hơn với tài liệu Graph (<a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/docs\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https://thegraph.com/docs\">https://thegraph.com/docs</a>). Nhưng nếu bạn đã đối phó thành công với việc tạo và triển khai Đồ thị con thử nghiệm này, thì bạn đã sẵn sàng để thực hiện những Subgraph phức tạp hơn!</p>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\"><p><a href=\"https://leopoldheg.medium.com/%D0%BF%D0%B5%D1%80%D0%B2%D1%8B%D0%B5-%D1%88%D0%B0%D0%B3%D0%B8-%D0%B3%D1%83%D0%BC%D0%B0%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%B8%D1%8F-%D0%B2-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D1%81%D0%B0%D0%B1%D0%B3%D1%80%D0%B0%D1%84%D0%B0-f585825757e6\"><strong>Nguồn</strong></a></p></p>\n</div>\n</div>\n</div>\n</div>",
"json_metadata": "{\"tags\":[\"thegraph\",\"graphprotocol\",\"eth\",\"ethereum\",\"web3\"],\"users\":[\"graphprotocol\"],\"image\":[\"https://cdn-images-1.medium.com/max/800/0*u36VDmhdfO1KlO-k.png\",\"https://cdn-images-1.medium.com/max/800/1*rlLOUWrpMNF5VkQeJaBD6g.jpeg\",\"https://cdn-images-1.medium.com/max/800/0*5ix26V_NJlmdMxtP.png\",\"https://cdn-images-1.medium.com/max/800/0*gZWebsX0eoRm3-Uu.png\",\"https://cdn-images-1.medium.com/max/800/0*EnujLrc567bJ1PcJ.png\",\"https://cdn-images-1.medium.com/max/800/0*JoNuSWN304e30ftD.png\",\"https://cdn-images-1.medium.com/max/800/0*s1kg12XYMeCWouz3.png\",\"https://cdn-images-1.medium.com/max/800/0*Z8sW2LiRLjznI0Sn.png\",\"https://cdn-images-1.medium.com/max/800/0*QAX1KTiEAZJ7bIyg.png\",\"https://cdn-images-1.medium.com/max/800/0*YuiOuoQRfZxoWtKB.png\",\"https://cdn-images-1.medium.com/max/800/0*NMfilnXTVxS-UEHh.png\",\"https://cdn-images-1.medium.com/max/800/0*rSmLIJjvTHHK-FIQ.png\",\"https://cdn-images-1.medium.com/max/800/0*478ZZ_hNba_PX1D6.png\",\"https://cdn-images-1.medium.com/max/800/0*J_utp_613UUjGE-B.png\",\"https://cdn-images-1.medium.com/max/800/0*8YJEYOunhK0VWgje.png\",\"https://cdn-images-1.medium.com/max/800/0*nAxTcAkHYImPZM5z.png\",\"https://cdn-images-1.medium.com/max/800/0*GB9KfwXbaUw91SsX.png\",\"https://cdn-images-1.medium.com/max/800/0*RPkbQTiRb7xWnFx8.png\",\"https://cdn-images-1.medium.com/max/800/0*OpLx1cT3RlNlrcZM.png\",\"https://cdn-images-1.medium.com/max/800/0*aB2FYJXFFYhqWVEl.png\"],\"links\":[\"https://thegraph.com/docs\",\"https://www.youtube.com/watch?v=e5OwjDao3MA\",\"https://youtu.be/coa0Vw47qNc\",\"https://thegraph.com/docs/introduction\",\"https://thegraph.com/docs/quick-start\",\"https://iterm2.com/\",\"https://alternativeto.net/software/iterm2/?platform=windows\",\"https://gist.github.com/rcugut/46904124d198a9dbd430abe88ebf849b\",\"https://classic.yarnpkg.com/en/docs/install/#windows-stable\",\"https://yoember.com/nodejs/the-best-way-to-install-node-js-with-yarn/\",\"https://api.thegraph.com/deploy/\",\"https://visualstudio.microsoft.com/ru/\",\"https://api.thegraph.com/ipfs/\",\"https://leopoldheg.medium.com/%D0%BF%D0%B5%D1%80%D0%B2%D1%8B%D0%B5-%D1%88%D0%B0%D0%B3%D0%B8-%D0%B3%D1%83%D0%BC%D0%B0%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%B8%D1%8F-%D0%B2-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D1%81%D0%B0%D0%B1%D0%B3%D1%80%D0%B0%D1%84%D0%B0-f585825757e6\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "thegraph",
"permlink": "cac-buoc-dau-tien-cua-trong-viec-tao-subgraph-cua-rieng-ban-danh-cho-nguoi-moi-bat-dau",
"title": "Các bước đầu tiên của trong việc tạo Subgraph của riêng bạn dành cho người mới bắt đầu"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-09T09:56:00",
"trx_id": "30e545959eb76b34060129fbb9504a3b7ddd7b6c",
"trx_in_block": 0,
"virtual_op": 0
}nhanhoang91published a new post: tiep-tuc-cuoc-hanh-trinh-de-tao-ra-chuyen-muc-con-danh-cho-nguoi-moi-bat-dau2020/12/08 03:56:18
nhanhoang91published a new post: tiep-tuc-cuoc-hanh-trinh-de-tao-ra-chuyen-muc-con-danh-cho-nguoi-moi-bat-dau
2020/12/08 03:56:18
| author | nhanhoang91 |
| body | <h3 class="graf graf--h3 graf--empty"> </h3> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*e7LVsPWcBYid8tEo.png" data-image-id="0*e7LVsPWcBYid8tEo.png" data-width="1400" data-height="792" data-is-featured="true" /> </div> </div> <p class="graf graf--p">Tôi sẽ bắt đầu với một tuyên bố từ chối trách nhiệm nhỏ: Bài viết này là sự tiếp nối của bài viết trước của tôi. Tôi giả định rằng bạn đã đọc nó, đã có thể thực hiện tất cả các bước được nêu ở đó và triển khai tiểu trình thử nghiệm của bạn. Nếu bạn chưa quen với bài viết trước, tôi thực sự khuyên bạn nên theo liên kết và <a class="markup--anchor markup--p-anchor" href="https://medium.com/p/9f21301dc048/" target="_blank" rel="noopener" data-href="https://medium.com/p/9f21301dc048/">bắt đầu với nó</a>.</p> </div> </div> <p class="graf graf--p">Tôi xin nhắc bạn rằng sau khi cài đặt thành công Graph CLI, chúng tôi có thể lựa chọn giữa 2 cách để tạo Subgraph: 1) từ hợp đồng Ethereum hiện có 2) từ một ví dụ hiện có từ nhóm The Graph. Trong bài viết này, chúng tôi sẽ xem xét thuật toán của các hành động để tạo Subgraph trực tiếp từ hợp đồng Ethereum đã chọn.</p> <p class="graf graf--p">Sau khi quyết định ý tưởng mà bạn muốn thực hiện bằng cách sử dụng đồ thị con, bạn sẽ tìm thấy địa chỉ của hợp đồng mà bạn quan tâm trên mạng Ethereum từ nơi bạn định lập chỉ mục dữ liệu.</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*W6MeizmFX8X7Dm2A.png" data-image-id="0*W6MeizmFX8X7Dm2A.png" data-width="1400" data-height="400" /> <p class="graf graf--p">Sau đó, bạn có thể triển khai lệnh do nhóm The Graph đề xuất:</p> <pre class="graf graf--pre">graph init \<br /> --from-contract <CONTRACT_ADDRESS> \<br /> [--network <ETHEREUM_NETWORK>] \<br /> [--abi <FILE>] \<br /> <GITHUB_USER>/<SUBGRAPH_NAME> [<DIRECTORY>]</pre> <pre class="graf graf--pre graf--empty"> </pre> <p class="graf graf--p">Đối với điều này, bạn cần phải thay đổi <code class="markup--code markup--p-code"><CONTRACT_ADDRESS></code> đến Địa chỉ của hợp đồng của bạn.</p> <p class="graf graf--p">2 trường tiếp theo là tùy chọn, nhưng nếu muốn sử dụng, bạn cần chọn <a class="markup--anchor markup--p-anchor" href="https://i.imgur.com/fWrHwLp.png" target="_blank" rel="noopener" data-href="https://i.imgur.com/fWrHwLp.png">mạng</a> mà hợp đồng đã chọn hoạt động từ các tùy chọn hiện có và đường dẫn đến tệp ABI đã lưu của hợp đồng trên máy tính của bạn. Ví dụ, bạn có thể tải tệp ABI xuống máy tính của mình trên trang web <a class="markup--anchor markup--p-anchor" href="https://etherscan.io/" target="_blank" rel="noopener" data-href="https://etherscan.io/">etherscan</a>.</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*ll6KGM2Ve58uRy6D.png" data-image-id="0*ll6KGM2Ve58uRy6D.png" data-width="1400" data-height="1180" /> <p class="graf graf--p"><code class="markup--code markup--p-code"><GITHUB_USER></code> Đây là tên tài khoản GitHub của bạn <code class="markup--code markup--p-code"><SUBGRAPH_NAME></code> đây là tên của trang con của bạn,<code class="markup--code markup--p-code"><DIRECTORY></code> cũng là một trường tùy chọn</p> <p class="graf graf--p">Để đơn giản hóa tác vụ, bạn có thể chỉ cần thực hiện lệnh <code class="markup--code markup--p-code">graph init --from-contract <CONTRACT_ADDRESS> </code>và từng bước trả lời các yêu cầu đầu cuối của bạn:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*jWK7DtWrCQKwargT.png" data-image-id="0*jWK7DtWrCQKwargT.png" data-width="941" data-height="179" /> <p class="graf graf--p">Kết quả là, bạn sẽ nhận được một cửa sổ với các bước tiếp theo được đề xuất.</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*AthoK4oWumyhVu5a.png" data-image-id="0*AthoK4oWumyhVu5a.png" data-width="948" data-height="283" /> <p class="graf graf--p">Để thực hiện lệnh đầu tiên</p> <pre class="graf graf--pre">graph auth <a class="markup--anchor markup--pre-anchor" href="https://api.thegraph.com/deploy/" target="_blank" rel="noopener nofollow noopener" data-href="https://api.thegraph.com/deploy/">https://api.thegraph.com/deploy/</a> <ACCESS_TOKEN></pre> <pre class="graf graf--pre graf--empty"> </pre> <p class="graf graf--p">Bạn cần thay thế<access-token> đến mã thông báo truy cập của Đồ thị con của bạn</p> <p class="graf graf--p">Để vào thư mục, hãy thực hiện lệnh “cd <tên thư mục>” và sau đó sử dụng lệnh: “ls”. Kết quả là bạn sẽ thấy nội dung trong thư mục của mình.</p> <p class="graf graf--p">Bên trong thư mục, bạn có thể thấy các tệp khác nhau được tạo, nhưng để hiểu rõ hơn về mã, bạn có thể mở thư mục này trong Visual Studio. Để thực hiện việc này, bạn cần triển khai lệnh: “code.”, Lệnh này sẽ khởi chạy chương trình trên với thư mục Subgraph của bạn đã được mở trong đó (lưu ý, bạn phải cài đặt Visual Studio trước. Nếu bạn chưa cài đặt chương trình này khi cài đặt Node.js, bạn có thể tải xuống cô ấy từ <a class="markup--anchor markup--p-anchor" href="https://visualstudio.microsoft.com/ru/" target="_blank" rel="noopener" data-href="https://visualstudio.microsoft.com/ru/">trang web chính thức</a>)</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*4SZpxF78eAPn2Ven.png" data-image-id="0*4SZpxF78eAPn2Ven.png" data-width="363" data-height="26" /> <p class="graf graf--p">Các công việc tiếp theo với mã sẽ dựa trên ý tưởng của bạn và những gì bạn muốn từ Nội dung con của mình và tôi không thể đề xuất bất kỳ điều gì cụ thể, nhưng tôi khuyên bạn đừng quên chèn khối Bắt đầu vào Manifest khi hợp đồng của bạn được đăng trên mạng Ethereum để rút ngắn quy trình triển khai phụ lục</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*s_LTw1OZJaymflFF.png" data-image-id="0*s_LTw1OZJaymflFF.png" data-width="1351" data-height="838" /> <p class="graf graf--p">Bạn có thể tìm thấy khối này trong giao dịch tạo hợp đồng của mình, một lần nữa trên trang web <a class="markup--anchor markup--p-anchor" href="https://etherscan.io/" target="_blank" rel="noopener" data-href="https://etherscan.io/">etherscan</a>.</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*kA3VGsGJIo8CUV8R.png" data-image-id="0*kA3VGsGJIo8CUV8R.png" data-width="1400" data-height="1093" /> <p class="graf graf--p">Bước cuối cùng của việc triển khai Subgraph của chúng ta trên The Graph Hosting sẽ là hoạt động của chính nó “yearn deploy”:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/0*AE2pgWjjF0vuBuPp.png" data-image-id="0*AE2pgWjjF0vuBuPp.png" data-width="1174" data-height="737" /> <p class="graf graf--p">Như chúng ta có thể thấy, sau khi hoàn thành việc triển khai lệnh, chúng tôi nhận được một liên kết đến trang của Subgraph mà chúng tôi đã tạo, được triển khai cho dịch vụ Lưu trữ The Graph và hiện tại có lẽ đã được lập chỉ mục bởi nó.</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong"><p class="graf graf--p"><a href="https://leopoldheg.medium.com/%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%83%D1%82%D0%B5%D1%88%D0%B5%D1%81%D1%82%D0%B2%D0%B8%D1%8F-%D0%B3%D1%83%D0%BC%D0%B0%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%B8%D1%8F-%D0%BF%D0%BE-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8E-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D1%81%D0%B0%D0%B1%D0%B3%D1%80%D0%B0%D1%84%D0%B0-ebe08f7cb7b0"><strong class="markup--strong markup--p-strong">Nguồn</strong></a></p> <p class="graf graf--p graf--empty"> </p> |
| json metadata | {"tags":["thegraph","graphprotocol","subgraph"],"image":["https://cdn-images-1.medium.com/max/800/0*e7LVsPWcBYid8tEo.png","https://cdn-images-1.medium.com/max/800/0*W6MeizmFX8X7Dm2A.png","https://cdn-images-1.medium.com/max/800/0*ll6KGM2Ve58uRy6D.png","https://cdn-images-1.medium.com/max/800/0*jWK7DtWrCQKwargT.png","https://cdn-images-1.medium.com/max/800/0*AthoK4oWumyhVu5a.png","https://cdn-images-1.medium.com/max/800/0*4SZpxF78eAPn2Ven.png","https://cdn-images-1.medium.com/max/800/0*s_LTw1OZJaymflFF.png","https://cdn-images-1.medium.com/max/800/0*kA3VGsGJIo8CUV8R.png","https://cdn-images-1.medium.com/max/800/0*AE2pgWjjF0vuBuPp.png"],"links":["https://medium.com/p/9f21301dc048/","https://i.imgur.com/fWrHwLp.png","https://etherscan.io/","https://api.thegraph.com/deploy/","https://visualstudio.microsoft.com/ru/","https://leopoldheg.medium.com/%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%83%D1%82%D0%B5%D1%88%D0%B5%D1%81%D1%82%D0%B2%D0%B8%D1%8F-%D0%B3%D1%83%D0%BC%D0%B0%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%B8%D1%8F-%D0%BF%D0%BE-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8E-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D1%81%D0%B0%D0%B1%D0%B3%D1%80%D0%B0%D1%84%D0%B0-ebe08f7cb7b0"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | thegraph |
| permlink | tiep-tuc-cuoc-hanh-trinh-de-tao-ra-chuyen-muc-con-danh-cho-nguoi-moi-bat-dau |
| title | Tiếp tục cuộc hành trình để tạo ra Chuyên mục con dành cho người mới bắt đầu |
| Transaction Info | Block #49261963/Trx a211be0c3f15c456df978160558d611ff0ef66ff |
View Raw JSON Data
{
"block": 49261963,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<h3 class=\"graf graf--h3 graf--empty\"> </h3>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*e7LVsPWcBYid8tEo.png\" data-image-id=\"0*e7LVsPWcBYid8tEo.png\" data-width=\"1400\" data-height=\"792\" data-is-featured=\"true\" />\n</div>\n</div>\n<p class=\"graf graf--p\">Tôi sẽ bắt đầu với một tuyên bố từ chối trách nhiệm nhỏ: Bài viết này là sự tiếp nối của bài viết trước của tôi. Tôi giả định rằng bạn đã đọc nó, đã có thể thực hiện tất cả các bước được nêu ở đó và triển khai tiểu trình thử nghiệm của bạn. Nếu bạn chưa quen với bài viết trước, tôi thực sự khuyên bạn nên theo liên kết và <a class=\"markup--anchor markup--p-anchor\" href=\"https://medium.com/p/9f21301dc048/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://medium.com/p/9f21301dc048/\">bắt đầu với nó</a>.</p>\n</div>\n</div>\n<p class=\"graf graf--p\">Tôi xin nhắc bạn rằng sau khi cài đặt thành công Graph CLI, chúng tôi có thể lựa chọn giữa 2 cách để tạo Subgraph: 1) từ hợp đồng Ethereum hiện có 2) từ một ví dụ hiện có từ nhóm The Graph. Trong bài viết này, chúng tôi sẽ xem xét thuật toán của các hành động để tạo Subgraph trực tiếp từ hợp đồng Ethereum đã chọn.</p>\n<p class=\"graf graf--p\">Sau khi quyết định ý tưởng mà bạn muốn thực hiện bằng cách sử dụng đồ thị con, bạn sẽ tìm thấy địa chỉ của hợp đồng mà bạn quan tâm trên mạng Ethereum từ nơi bạn định lập chỉ mục dữ liệu.</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*W6MeizmFX8X7Dm2A.png\" data-image-id=\"0*W6MeizmFX8X7Dm2A.png\" data-width=\"1400\" data-height=\"400\" />\n<p class=\"graf graf--p\">Sau đó, bạn có thể triển khai lệnh do nhóm The Graph đề xuất:</p>\n<pre class=\"graf graf--pre\">graph init \\<br /> --from-contract <CONTRACT_ADDRESS> \\<br /> [--network <ETHEREUM_NETWORK>] \\<br /> [--abi <FILE>] \\<br /> <GITHUB_USER>/<SUBGRAPH_NAME> [<DIRECTORY>]</pre>\n<pre class=\"graf graf--pre graf--empty\"> </pre>\n<p class=\"graf graf--p\">Đối với điều này, bạn cần phải thay đổi <code class=\"markup--code markup--p-code\"><CONTRACT_ADDRESS></code> đến Địa chỉ của hợp đồng của bạn.</p>\n<p class=\"graf graf--p\">2 trường tiếp theo là tùy chọn, nhưng nếu muốn sử dụng, bạn cần chọn <a class=\"markup--anchor markup--p-anchor\" href=\"https://i.imgur.com/fWrHwLp.png\" target=\"_blank\" rel=\"noopener\" data-href=\"https://i.imgur.com/fWrHwLp.png\">mạng</a> mà hợp đồng đã chọn hoạt động từ các tùy chọn hiện có và đường dẫn đến tệp ABI đã lưu của hợp đồng trên máy tính của bạn. Ví dụ, bạn có thể tải tệp ABI xuống máy tính của mình trên trang web <a class=\"markup--anchor markup--p-anchor\" href=\"https://etherscan.io/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://etherscan.io/\">etherscan</a>.</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*ll6KGM2Ve58uRy6D.png\" data-image-id=\"0*ll6KGM2Ve58uRy6D.png\" data-width=\"1400\" data-height=\"1180\" />\n<p class=\"graf graf--p\"><code class=\"markup--code markup--p-code\"><GITHUB_USER></code> Đây là tên tài khoản GitHub của bạn <code class=\"markup--code markup--p-code\"><SUBGRAPH_NAME></code> đây là tên của trang con của bạn,<code class=\"markup--code markup--p-code\"><DIRECTORY></code> cũng là một trường tùy chọn</p>\n<p class=\"graf graf--p\">Để đơn giản hóa tác vụ, bạn có thể chỉ cần thực hiện lệnh <code class=\"markup--code markup--p-code\">graph init --from-contract <CONTRACT_ADDRESS> </code>và từng bước trả lời các yêu cầu đầu cuối của bạn:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*jWK7DtWrCQKwargT.png\" data-image-id=\"0*jWK7DtWrCQKwargT.png\" data-width=\"941\" data-height=\"179\" />\n<p class=\"graf graf--p\">Kết quả là, bạn sẽ nhận được một cửa sổ với các bước tiếp theo được đề xuất.</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*AthoK4oWumyhVu5a.png\" data-image-id=\"0*AthoK4oWumyhVu5a.png\" data-width=\"948\" data-height=\"283\" />\n<p class=\"graf graf--p\">Để thực hiện lệnh đầu tiên</p>\n<pre class=\"graf graf--pre\">graph auth <a class=\"markup--anchor markup--pre-anchor\" href=\"https://api.thegraph.com/deploy/\" target=\"_blank\" rel=\"noopener nofollow noopener\" data-href=\"https://api.thegraph.com/deploy/\">https://api.thegraph.com/deploy/</a> <ACCESS_TOKEN></pre>\n<pre class=\"graf graf--pre graf--empty\"> </pre>\n<p class=\"graf graf--p\">Bạn cần thay thế<access-token> đến mã thông báo truy cập của Đồ thị con của bạn</p>\n<p class=\"graf graf--p\">Để vào thư mục, hãy thực hiện lệnh “cd <tên thư mục>” và sau đó sử dụng lệnh: “ls”. Kết quả là bạn sẽ thấy nội dung trong thư mục của mình.</p>\n<p class=\"graf graf--p\">Bên trong thư mục, bạn có thể thấy các tệp khác nhau được tạo, nhưng để hiểu rõ hơn về mã, bạn có thể mở thư mục này trong Visual Studio. Để thực hiện việc này, bạn cần triển khai lệnh: “code.”, Lệnh này sẽ khởi chạy chương trình trên với thư mục Subgraph của bạn đã được mở trong đó (lưu ý, bạn phải cài đặt Visual Studio trước. Nếu bạn chưa cài đặt chương trình này khi cài đặt Node.js, bạn có thể tải xuống cô ấy từ <a class=\"markup--anchor markup--p-anchor\" href=\"https://visualstudio.microsoft.com/ru/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://visualstudio.microsoft.com/ru/\">trang web chính thức</a>)</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*4SZpxF78eAPn2Ven.png\" data-image-id=\"0*4SZpxF78eAPn2Ven.png\" data-width=\"363\" data-height=\"26\" />\n<p class=\"graf graf--p\">Các công việc tiếp theo với mã sẽ dựa trên ý tưởng của bạn và những gì bạn muốn từ Nội dung con của mình và tôi không thể đề xuất bất kỳ điều gì cụ thể, nhưng tôi khuyên bạn đừng quên chèn khối Bắt đầu vào Manifest khi hợp đồng của bạn được đăng trên mạng Ethereum để rút ngắn quy trình triển khai phụ lục</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*s_LTw1OZJaymflFF.png\" data-image-id=\"0*s_LTw1OZJaymflFF.png\" data-width=\"1351\" data-height=\"838\" />\n<p class=\"graf graf--p\">Bạn có thể tìm thấy khối này trong giao dịch tạo hợp đồng của mình, một lần nữa trên trang web <a class=\"markup--anchor markup--p-anchor\" href=\"https://etherscan.io/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://etherscan.io/\">etherscan</a>.</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*kA3VGsGJIo8CUV8R.png\" data-image-id=\"0*kA3VGsGJIo8CUV8R.png\" data-width=\"1400\" data-height=\"1093\" />\n<p class=\"graf graf--p\">Bước cuối cùng của việc triển khai Subgraph của chúng ta trên The Graph Hosting sẽ là hoạt động của chính nó “yearn deploy”:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/0*AE2pgWjjF0vuBuPp.png\" data-image-id=\"0*AE2pgWjjF0vuBuPp.png\" data-width=\"1174\" data-height=\"737\" />\n<p class=\"graf graf--p\">Như chúng ta có thể thấy, sau khi hoàn thành việc triển khai lệnh, chúng tôi nhận được một liên kết đến trang của Subgraph mà chúng tôi đã tạo, được triển khai cho dịch vụ Lưu trữ The Graph và hiện tại có lẽ đã được lập chỉ mục bởi nó.</p>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\"><p class=\"graf graf--p\"><a href=\"https://leopoldheg.medium.com/%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%83%D1%82%D0%B5%D1%88%D0%B5%D1%81%D1%82%D0%B2%D0%B8%D1%8F-%D0%B3%D1%83%D0%BC%D0%B0%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%B8%D1%8F-%D0%BF%D0%BE-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8E-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D1%81%D0%B0%D0%B1%D0%B3%D1%80%D0%B0%D1%84%D0%B0-ebe08f7cb7b0\"><strong class=\"markup--strong markup--p-strong\">Nguồn</strong></a></p>\n<p class=\"graf graf--p graf--empty\"> </p>",
"json_metadata": "{\"tags\":[\"thegraph\",\"graphprotocol\",\"subgraph\"],\"image\":[\"https://cdn-images-1.medium.com/max/800/0*e7LVsPWcBYid8tEo.png\",\"https://cdn-images-1.medium.com/max/800/0*W6MeizmFX8X7Dm2A.png\",\"https://cdn-images-1.medium.com/max/800/0*ll6KGM2Ve58uRy6D.png\",\"https://cdn-images-1.medium.com/max/800/0*jWK7DtWrCQKwargT.png\",\"https://cdn-images-1.medium.com/max/800/0*AthoK4oWumyhVu5a.png\",\"https://cdn-images-1.medium.com/max/800/0*4SZpxF78eAPn2Ven.png\",\"https://cdn-images-1.medium.com/max/800/0*s_LTw1OZJaymflFF.png\",\"https://cdn-images-1.medium.com/max/800/0*kA3VGsGJIo8CUV8R.png\",\"https://cdn-images-1.medium.com/max/800/0*AE2pgWjjF0vuBuPp.png\"],\"links\":[\"https://medium.com/p/9f21301dc048/\",\"https://i.imgur.com/fWrHwLp.png\",\"https://etherscan.io/\",\"https://api.thegraph.com/deploy/\",\"https://visualstudio.microsoft.com/ru/\",\"https://leopoldheg.medium.com/%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%83%D1%82%D0%B5%D1%88%D0%B5%D1%81%D1%82%D0%B2%D0%B8%D1%8F-%D0%B3%D1%83%D0%BC%D0%B0%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%B8%D1%8F-%D0%BF%D0%BE-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8E-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D1%81%D0%B0%D0%B1%D0%B3%D1%80%D0%B0%D1%84%D0%B0-ebe08f7cb7b0\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "thegraph",
"permlink": "tiep-tuc-cuoc-hanh-trinh-de-tao-ra-chuyen-muc-con-danh-cho-nguoi-moi-bat-dau",
"title": "Tiếp tục cuộc hành trình để tạo ra Chuyên mục con dành cho người mới bắt đầu"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-08T03:56:18",
"trx_id": "a211be0c3f15c456df978160558d611ff0ef66ff",
"trx_in_block": 2,
"virtual_op": 0
}steemdelegated 17.579 SP to @nhanhoang912020/12/05 18:27:21
steemdelegated 17.579 SP to @nhanhoang91
2020/12/05 18:27:21
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 28588.643322 VESTS |
| Transaction Info | Block #49194628/Trx 46d0fbd9dbed2c0efcc1473715472a30377a3f12 |
View Raw JSON Data
{
"block": 49194628,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "28588.643322 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-05T18:27:21",
"trx_id": "46d0fbd9dbed2c0efcc1473715472a30377a3f12",
"trx_in_block": 1,
"virtual_op": 0
}executive-boardsent 0.001 STEEM to @nhanhoang91- "❗ Hello nhanhoang91, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the ..."2020/12/05 08:58:03
executive-boardsent 0.001 STEEM to @nhanhoang91- "❗ Hello nhanhoang91, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the ..."
2020/12/05 08:58:03
| amount | 0.001 STEEM |
| from | executive-board |
| memo | ❗ Hello nhanhoang91, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the most coins. It's easy, just follow the instructions. Warm regards, The Executive Board. |
| to | nhanhoang91 |
| Transaction Info | Block #49183457/Trx e609e2f4a637053e4f50ba9d99739b8fa8868347 |
View Raw JSON Data
{
"block": 49183457,
"op": [
"transfer",
{
"amount": "0.001 STEEM",
"from": "executive-board",
"memo": "❗ Hello nhanhoang91, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the most coins. It's easy, just follow the instructions. Warm regards, The Executive Board.",
"to": "nhanhoang91"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-05T08:58:03",
"trx_id": "e609e2f4a637053e4f50ba9d99739b8fa8868347",
"trx_in_block": 2,
"virtual_op": 0
}nhanhoang91published a new post: trien-khai-mot-subgraph-do-thi-con2020/12/05 08:55:54
nhanhoang91published a new post: trien-khai-mot-subgraph-do-thi-con
2020/12/05 08:55:54
| author | nhanhoang91 |
| body | <h3 class="graf graf--h3">Triển khai một Subgraph (đồ thị con)</h3> <p class="graf graf--p">Trong phần trước, bạn đã học cách viết các tệp tạo nên một đồ thị con và cách cài đặt Graph CLI để tạo mã cho đồ thị con của bạn. Bây giờ đã đến lúc triển khai đồ thị con cho dịch vụ Đồ thị được lưu trữ.</p> <h3 class="graf graf--h3">Tạo tài khoản Graph Explorer</h3> <p class="graf graf--p">Trước khi sử dụng dịch vụ được lưu trữ, hãy tạo một tài khoản trong The Graph Explorer. Bạn sẽ cần một tài khoản <a class="markup--anchor markup--p-anchor" href="https://github.com/" target="_blank" rel="noopener" data-href="https://github.com/">Github</a> cho điều đó; nếu bạn chưa có, bạn cần tạo nó trước. Sau đó, điều hướng đến <a class="markup--anchor markup--p-anchor" href="https://thegraph.com/explorer/" target="_blank" rel="noopener" data-href="https://thegraph.com/explorer/">Trình khám phá</a>, nhấp vào nút “Đăng ký với Github” và hoàn tất quy trình ủy quyền của Github.</p> <h3 class="graf graf--h3">Lưu trữ mã thông báo truy cập</h3> <p class="graf graf--p">Sau khi tạo tài khoản, hãy điều hướng đến <a class="markup--anchor markup--p-anchor" href="https://thegraph.com/explorer/dashboard" target="_blank" rel="noopener" data-href="https://thegraph.com/explorer/dashboard">trang tổng quan</a> của bạn. Sao chép mã thông báo truy cập được hiển thị trên trang tổng quan và chạy xác thực đồ thị graph auth <a class="markup--anchor markup--p-anchor" href="https://api.thegraph.com/deploy/" target="_blank" rel="noopener" data-href="https://api.thegraph.com/deploy/">https://api.thegraph.com/deploy/</a> <ACCESS_TOKEN>. Điều này sẽ lưu trữ mã thông báo truy cập trên máy tính của bạn. Bạn chỉ cần thực hiện việc này một lần hoặc nếu bạn tạo lại mã thông báo truy cập.</p> <h3 class="graf graf--h3">Tạo đồ thị con</h3> <p class="graf graf--p">Trước khi triển khai đồ thị con, bạn cần tạo nó trong Graph Explorer. Đi tới <a class="markup--anchor markup--p-anchor" href="https://thegraph.com/explorer/dashboard" target="_blank" rel="noopener" data-href="https://thegraph.com/explorer/dashboard">trang tổng quan</a> và nhấp vào nút “<em class="markup--em markup--p-em">Add Subgraph</em>“ và điền vào thông tin bên dưới nếu thích hợp:</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Image</strong> - Chọn hình ảnh được sử dụng làm hình ảnh xem trước và hình thu nhỏ cho đồ thị con.</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Subgraph Name</strong> - Cùng với tên tài khoản mà đồ thị con được tạo, điều này cũng sẽ xác định account-name/subgraph-name -tên kiểu được sử dụng cho các triển khai và điểm cuối GraphQL. <em class="markup--em markup--p-em">Không thể thay đổi trường này sau đó.</em></p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Account</strong> - Tài khoản mà trang con được tạo. Đây có thể là tài khoản của một cá nhân hoặc tổ chức. <em class="markup--em markup--p-em">Sau này không thể di chuyển các đồ thị con giữa các tài khoản.</em></p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Subtitle </strong> - Văn bản sẽ xuất hiện trong thẻ đoạn phụ.</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Description</strong> - Mô tả của trang con, hiển thị trên trang chi tiết của trang con.</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">GitHub URL</strong> - Liên kết đến kho lưu trữ trang con trên GitHub.</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Hide</strong> - Bật tính năng này sẽ ẩn đồ thị con trong Trình khám phá đồ thị.</p> <p class="graf graf--p">Sau khi lưu đồ thị con mới, bạn sẽ được hiển thị một màn hình với trợ giúp về cách cài đặt Graph CLI, cách tạo giàn giáo cho đồ thị con mới và cách triển khai đồ thị con của bạn. Hai bước đầu tiên đã được trình bày <a class="markup--anchor markup--p-anchor" href="https://thegraph.com/docs/define-a-subgraph" target="_blank" rel="noopener" data-href="https://thegraph.com/docs/define-a-subgraph">trong phần trước</a>.</p> <h3 class="graf graf--h3">Triển khai đồ thị con</h3> <p class="graf graf--p">Việc triển khai đồ thị con của bạn sẽ tải các tệp đồ thị con mà bạn đã tạo bằng yarn build lên IPFS và yêu cầu Trình khám phá đồ thị bắt đầu lập chỉ mục đồ thị con của bạn bằng các tệp này.</p> <p class="graf graf--p">Bạn triển khai đồ thị con bằng cách chạy yarn deploy</p> <p class="graf graf--p">Sau khi triển khai đồ thị con, Trình khám phá đồ thị sẽ chuyển sang hiển thị trạng thái đồng bộ hóa đồ thị con của bạn. Tùy thuộc vào lượng dữ liệu và số lượng sự kiện cần được trích xuất từ các khối Ethereum lịch sử, bắt đầu với khối gốc, quá trình đồng bộ hóa có thể mất từ vài phút đến vài giờ. Trạng thái đồ thị con chuyển sang Synced sau khi Nút đồ thị đã trích xuất tất cả dữ liệu từ các khối lịch sử. Graph Node sẽ tiếp tục kiểm tra các khối Ethereum cho đồ thị con của bạn khi các khối này được khai thác.</p> <h3 class="graf graf--h3">Triển khai lại một đồ thị con</h3> <p class="graf graf--p">Khi thực hiện các thay đổi đối với định nghĩa đồ thị con của bạn, chẳng hạn như để khắc phục sự cố trong ánh xạ thực thể, hãy chạy lại lệnh yarn deploy ở trên để triển khai phiên bản cập nhật của đồ thị con của bạn. Bất kỳ cập nhật nào của một đồ thị con đều yêu cầu Nút biểu đồ lập chỉ mục lại toàn bộ đồ thị con của bạn, bắt đầu lại từ khối gốc.</p> <p class="graf graf--p">Nếu đồ thị con đã triển khai trước đó của bạn vẫn ở trạng thái Syncing, nó sẽ được thay thế ngay lập tức bằng phiên bản mới được triển khai. Nếu đồ thị con được triển khai trước đó đã được đồng bộ hóa hoàn toàn, Graph Node sẽ đánh dấu phiên bản mới được triển khai là Pending Version, đồng bộ hóa nó trong nền và chỉ thay thế phiên bản hiện được triển khai bằng phiên bản mới sau khi quá trình đồng bộ hóa phiên bản mới kết thúc. Điều này đảm bảo rằng bạn có một biểu đồ con để làm việc trong khi phiên bản mới đang đồng bộ hóa.</p> <h3 class="graf graf--h3">Triển khai đồ thị con cho nhiều mạng Ethereum</h3> <p class="graf graf--p">Trong một số trường hợp, bạn sẽ muốn triển khai cùng một bảng con cho nhiều mạng Ethereum mà không cần sao chép tất cả mã của nó. Thách thức chính đi kèm với điều này là địa chỉ hợp đồng trên các mạng này khác nhau. Một giải pháp cho phép tham số hóa các khía cạnh như địa chỉ hợp đồng là tạo các phần của nó bằng cách sử dụng hệ thống tạo khuôn mẫu như <a class="markup--anchor markup--p-anchor" href="https://mustache.github.io/" target="_blank" rel="noopener" data-href="https://mustache.github.io/">Mustache</a> hoặc <a class="markup--anchor markup--p-anchor" href="https://handlebarsjs.com/" target="_blank" rel="noopener" data-href="https://handlebarsjs.com/">Handlebars</a>.</p> <p class="graf graf--p">Để minh họa cách tiếp cận này, hãy giả sử một đoạn con nên được triển khai cho mainnet và Ropsten bằng cách sử dụng các địa chỉ hợp đồng khác nhau. Sau đó, bạn có thể xác định hai tệp cấu hình cung cấp địa chỉ cho mỗi mạng:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*YoHCYQiR3u9V4EMIMYQY2w.jpeg" data-image-id="1*YoHCYQiR3u9V4EMIMYQY2w.jpeg" data-width="830" data-height="152" /> <p class="graf graf--p">Và</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*azQm5NB_aeFjrP3KJORP4w.jpeg" data-image-id="1*azQm5NB_aeFjrP3KJORP4w.jpeg" data-width="830" data-height="153" /> <p class="graf graf--p">Cùng với đó, bạn sẽ thay thế tên mạng và các địa chỉ trong tệp kê khai bằng các trình giữ chỗ có thể thay đổi {{network}} và {{address}} và đổi tên tệp kê khai thành ví dụ: subgraph.template.yaml:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*40LvuM6c0CI3aPats12gFQ.jpeg" data-image-id="1*40LvuM6c0CI3aPats12gFQ.jpeg" data-width="828" data-height="363" /> <p class="graf graf--p">Để tạo tệp kê khai cho một trong hai mạng, bạn có thể thêm hai lệnh bổ sung vào package.json cùng với sự phụ thuộc vào mustache:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*mykYdsI5JSBCK2K6K5okFg.jpeg" data-image-id="1*mykYdsI5JSBCK2K6K5okFg.jpeg" data-width="829" data-height="364" /> <p class="graf graf--p">Để triển khai bảng con này cho mainnet hoặc Ropsten, bây giờ bạn chỉ cần chạy một trong hai lệnh sau:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*-kKopMRmgn09Er-afbG6lg.jpeg" data-image-id="1*-kKopMRmgn09Er-afbG6lg.jpeg" data-width="827" data-height="175" /> <p class="graf graf--p">Một ví dụ làm việc của điều này có thể được tìm thấy <a class="markup--anchor markup--p-anchor" href="https://github.com/graphprotocol/example-subgraph/tree/371232cf68e6d814facf5e5413ad0fef65144759" target="_blank" rel="noopener" data-href="https://github.com/graphprotocol/example-subgraph/tree/371232cf68e6d814facf5e5413ad0fef65144759">ở đây</a>.</p> <p class="graf graf--p">Lưu ý;: Cách tiếp cận này cũng có thể được áp dụng trong các tình huống phức tạp hơn, trong đó cần phải thay thế nhiều hơn địa chỉ hợp đồng và tên mạng hoặc nơi tạo bản đồ hoặc ABI từ các mẫu.</p> <h3 class="graf graf--h3">Kiểm tra tình trạng đồ thị con</h3> <p class="graf graf--p">Nếu một đồ thị con đồng bộ hóa thành công, đó là một dấu hiệu tốt cho thấy nó sẽ tiếp tục chạy tốt mãi mãi. Tuy nhiên, các trình kích hoạt mới trên chuỗi có thể khiến đồ thị con của bạn gặp phải tình trạng lỗi chưa được kiểm tra hoặc nó có thể bắt đầu tụt hậu do các vấn đề về hiệu suất hoặc sự cố với các nhà khai thác nút.</p> <p class="graf graf--p">Graph Node hiển thị một điểm cuối graphql mà bạn có thể truy vấn để kiểm tra trạng thái của đồ thị con của mình. Trên dịch vụ được lưu trữ, nó có sẵn tại <a class="markup--anchor markup--p-anchor" href="https://api.thegraph.com/index-node/graphql." target="_blank" rel="noopener" data-href="https://api.thegraph.com/index-node/graphql.">https://api.thegraph.com/index-node/graphql.</a> Lược đồ đầy đủ cho điểm cuối này có thể được tìm thấy tại đây. Đây là một truy vấn mẫu kiểm tra trạng thái của phiên bản hiện tại của một đồ thị con:</p> <img class="graf-image" src="https://cdn-images-1.medium.com/max/800/1*HzkvA_janfJvcpyFnfpN2w.jpeg" data-image-id="1*HzkvA_janfJvcpyFnfpN2w.jpeg" data-width="829" data-height="579" /> <p class="graf graf--p">Thao tác này sẽ cung cấp cho bạn chainHeadBlock mà bạn có thể so sánh với latestBlock mới nhất trên đồ thị con của mình để kiểm tra xem nó có đang chạy phía sau hay không. synced thông báo nếu đồ thị con đã từng bắt kịp chuỗi. health hiện có thể nhận các giá trị healthy nếu không có lỗi xảy ra hoặc failed nếu có lỗi làm dừng tiến trình của đồ thị con. Trong trường hợp này, bạn có thể kiểm tra trường fatalError để biết chi tiết về lỗi này.</p> Discord: justacryptonoob#0840 <h3 class="graf graf--h3">Reference</h3> https://thegraph.com/docs/deploy-a-subgraph |
| json metadata | {"tags":["thegraph","graphprotocol","ethereum","blockchain"],"image":["https://cdn-images-1.medium.com/max/800/1*YoHCYQiR3u9V4EMIMYQY2w.jpeg","https://cdn-images-1.medium.com/max/800/1*azQm5NB_aeFjrP3KJORP4w.jpeg","https://cdn-images-1.medium.com/max/800/1*40LvuM6c0CI3aPats12gFQ.jpeg","https://cdn-images-1.medium.com/max/800/1*mykYdsI5JSBCK2K6K5okFg.jpeg","https://cdn-images-1.medium.com/max/800/1*-kKopMRmgn09Er-afbG6lg.jpeg","https://cdn-images-1.medium.com/max/800/1*HzkvA_janfJvcpyFnfpN2w.jpeg"],"links":["https://github.com/","https://thegraph.com/explorer/","https://thegraph.com/explorer/dashboard","https://api.thegraph.com/deploy/","https://thegraph.com/docs/define-a-subgraph","https://mustache.github.io/","https://handlebarsjs.com/","https://github.com/graphprotocol/example-subgraph/tree/371232cf68e6d814facf5e5413ad0fef65144759","https://api.thegraph.com/index-node/graphql.","https://thegraph.com/docs/deploy-a-subgraph"],"app":"steemit/0.2","format":"markdown"} |
| parent author | |
| parent permlink | thegraph |
| permlink | trien-khai-mot-subgraph-do-thi-con |
| title | Triển khai một Subgraph (đồ thị con) |
| Transaction Info | Block #49183416/Trx fe2432e51a4505e4ecb2577ca210576600cbae9a |
View Raw JSON Data
{
"block": 49183416,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "<h3 class=\"graf graf--h3\">Triển khai một Subgraph (đồ thị con)</h3>\n<p class=\"graf graf--p\">Trong phần trước, bạn đã học cách viết các tệp tạo nên một đồ thị con và cách cài đặt Graph CLI để tạo mã cho đồ thị con của bạn. Bây giờ đã đến lúc triển khai đồ thị con cho dịch vụ Đồ thị được lưu trữ.</p>\n<h3 class=\"graf graf--h3\">Tạo tài khoản Graph Explorer</h3>\n<p class=\"graf graf--p\">Trước khi sử dụng dịch vụ được lưu trữ, hãy tạo một tài khoản trong The Graph Explorer. Bạn sẽ cần một tài khoản <a class=\"markup--anchor markup--p-anchor\" href=\"https://github.com/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://github.com/\">Github</a> cho điều đó; nếu bạn chưa có, bạn cần tạo nó trước. Sau đó, điều hướng đến <a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/explorer/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/explorer/\">Trình khám phá</a>, nhấp vào nút “Đăng ký với Github” và hoàn tất quy trình ủy quyền của Github.</p>\n<h3 class=\"graf graf--h3\">Lưu trữ mã thông báo truy cập</h3>\n<p class=\"graf graf--p\">Sau khi tạo tài khoản, hãy điều hướng đến <a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/explorer/dashboard\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/explorer/dashboard\">trang tổng quan</a> của bạn. Sao chép mã thông báo truy cập được hiển thị trên trang tổng quan và chạy xác thực đồ thị graph auth <a class=\"markup--anchor markup--p-anchor\" href=\"https://api.thegraph.com/deploy/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://api.thegraph.com/deploy/\">https://api.thegraph.com/deploy/</a> <ACCESS_TOKEN>. Điều này sẽ lưu trữ mã thông báo truy cập trên máy tính của bạn. Bạn chỉ cần thực hiện việc này một lần hoặc nếu bạn tạo lại mã thông báo truy cập.</p>\n<h3 class=\"graf graf--h3\">Tạo đồ thị con</h3>\n<p class=\"graf graf--p\">Trước khi triển khai đồ thị con, bạn cần tạo nó trong Graph Explorer. Đi tới <a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/explorer/dashboard\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/explorer/dashboard\">trang tổng quan</a> và nhấp vào nút “<em class=\"markup--em markup--p-em\">Add Subgraph</em>“ và điền vào thông tin bên dưới nếu thích hợp:</p>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\">Image</strong> - Chọn hình ảnh được sử dụng làm hình ảnh xem trước và hình thu nhỏ cho đồ thị con.</p>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\">Subgraph Name</strong> - Cùng với tên tài khoản mà đồ thị con được tạo, điều này cũng sẽ xác định account-name/subgraph-name -tên kiểu được sử dụng cho các triển khai và điểm cuối GraphQL. <em class=\"markup--em markup--p-em\">Không thể thay đổi trường này sau đó.</em></p>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\">Account</strong> - Tài khoản mà trang con được tạo. Đây có thể là tài khoản của một cá nhân hoặc tổ chức. <em class=\"markup--em markup--p-em\">Sau này không thể di chuyển các đồ thị con giữa các tài khoản.</em></p>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\">Subtitle </strong> - Văn bản sẽ xuất hiện trong thẻ đoạn phụ.</p>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\">Description</strong> - Mô tả của trang con, hiển thị trên trang chi tiết của trang con.</p>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\">GitHub URL</strong> - Liên kết đến kho lưu trữ trang con trên GitHub.</p>\n<p class=\"graf graf--p\"><strong class=\"markup--strong markup--p-strong\">Hide</strong> - Bật tính năng này sẽ ẩn đồ thị con trong Trình khám phá đồ thị.</p>\n<p class=\"graf graf--p\">Sau khi lưu đồ thị con mới, bạn sẽ được hiển thị một màn hình với trợ giúp về cách cài đặt Graph CLI, cách tạo giàn giáo cho đồ thị con mới và cách triển khai đồ thị con của bạn. Hai bước đầu tiên đã được trình bày <a class=\"markup--anchor markup--p-anchor\" href=\"https://thegraph.com/docs/define-a-subgraph\" target=\"_blank\" rel=\"noopener\" data-href=\"https://thegraph.com/docs/define-a-subgraph\">trong phần trước</a>.</p>\n<h3 class=\"graf graf--h3\">Triển khai đồ thị con</h3>\n<p class=\"graf graf--p\">Việc triển khai đồ thị con của bạn sẽ tải các tệp đồ thị con mà bạn đã tạo bằng yarn build lên IPFS và yêu cầu Trình khám phá đồ thị bắt đầu lập chỉ mục đồ thị con của bạn bằng các tệp này.</p>\n<p class=\"graf graf--p\">Bạn triển khai đồ thị con bằng cách chạy yarn deploy</p>\n<p class=\"graf graf--p\">Sau khi triển khai đồ thị con, Trình khám phá đồ thị sẽ chuyển sang hiển thị trạng thái đồng bộ hóa đồ thị con của bạn. Tùy thuộc vào lượng dữ liệu và số lượng sự kiện cần được trích xuất từ các khối Ethereum lịch sử, bắt đầu với khối gốc, quá trình đồng bộ hóa có thể mất từ vài phút đến vài giờ. Trạng thái đồ thị con chuyển sang Synced sau khi Nút đồ thị đã trích xuất tất cả dữ liệu từ các khối lịch sử. Graph Node sẽ tiếp tục kiểm tra các khối Ethereum cho đồ thị con của bạn khi các khối này được khai thác.</p>\n<h3 class=\"graf graf--h3\">Triển khai lại một đồ thị con</h3>\n<p class=\"graf graf--p\">Khi thực hiện các thay đổi đối với định nghĩa đồ thị con của bạn, chẳng hạn như để khắc phục sự cố trong ánh xạ thực thể, hãy chạy lại lệnh yarn deploy ở trên để triển khai phiên bản cập nhật của đồ thị con của bạn. Bất kỳ cập nhật nào của một đồ thị con đều yêu cầu Nút biểu đồ lập chỉ mục lại toàn bộ đồ thị con của bạn, bắt đầu lại từ khối gốc.</p>\n<p class=\"graf graf--p\">Nếu đồ thị con đã triển khai trước đó của bạn vẫn ở trạng thái Syncing, nó sẽ được thay thế ngay lập tức bằng phiên bản mới được triển khai. Nếu đồ thị con được triển khai trước đó đã được đồng bộ hóa hoàn toàn, Graph Node sẽ đánh dấu phiên bản mới được triển khai là Pending Version, đồng bộ hóa nó trong nền và chỉ thay thế phiên bản hiện được triển khai bằng phiên bản mới sau khi quá trình đồng bộ hóa phiên bản mới kết thúc. Điều này đảm bảo rằng bạn có một biểu đồ con để làm việc trong khi phiên bản mới đang đồng bộ hóa.</p>\n<h3 class=\"graf graf--h3\">Triển khai đồ thị con cho nhiều mạng Ethereum</h3>\n<p class=\"graf graf--p\">Trong một số trường hợp, bạn sẽ muốn triển khai cùng một bảng con cho nhiều mạng Ethereum mà không cần sao chép tất cả mã của nó. Thách thức chính đi kèm với điều này là địa chỉ hợp đồng trên các mạng này khác nhau. Một giải pháp cho phép tham số hóa các khía cạnh như địa chỉ hợp đồng là tạo các phần của nó bằng cách sử dụng hệ thống tạo khuôn mẫu như <a class=\"markup--anchor markup--p-anchor\" href=\"https://mustache.github.io/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://mustache.github.io/\">Mustache</a> hoặc <a class=\"markup--anchor markup--p-anchor\" href=\"https://handlebarsjs.com/\" target=\"_blank\" rel=\"noopener\" data-href=\"https://handlebarsjs.com/\">Handlebars</a>.</p>\n<p class=\"graf graf--p\">Để minh họa cách tiếp cận này, hãy giả sử một đoạn con nên được triển khai cho mainnet và Ropsten bằng cách sử dụng các địa chỉ hợp đồng khác nhau. Sau đó, bạn có thể xác định hai tệp cấu hình cung cấp địa chỉ cho mỗi mạng:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*YoHCYQiR3u9V4EMIMYQY2w.jpeg\" data-image-id=\"1*YoHCYQiR3u9V4EMIMYQY2w.jpeg\" data-width=\"830\" data-height=\"152\" />\n<p class=\"graf graf--p\">Và</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*azQm5NB_aeFjrP3KJORP4w.jpeg\" data-image-id=\"1*azQm5NB_aeFjrP3KJORP4w.jpeg\" data-width=\"830\" data-height=\"153\" />\n<p class=\"graf graf--p\">Cùng với đó, bạn sẽ thay thế tên mạng và các địa chỉ trong tệp kê khai bằng các trình giữ chỗ có thể thay đổi {{network}} và {{address}} và đổi tên tệp kê khai thành ví dụ: subgraph.template.yaml:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*40LvuM6c0CI3aPats12gFQ.jpeg\" data-image-id=\"1*40LvuM6c0CI3aPats12gFQ.jpeg\" data-width=\"828\" data-height=\"363\" />\n<p class=\"graf graf--p\">Để tạo tệp kê khai cho một trong hai mạng, bạn có thể thêm hai lệnh bổ sung vào package.json cùng với sự phụ thuộc vào mustache:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*mykYdsI5JSBCK2K6K5okFg.jpeg\" data-image-id=\"1*mykYdsI5JSBCK2K6K5okFg.jpeg\" data-width=\"829\" data-height=\"364\" />\n<p class=\"graf graf--p\">Để triển khai bảng con này cho mainnet hoặc Ropsten, bây giờ bạn chỉ cần chạy một trong hai lệnh sau:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*-kKopMRmgn09Er-afbG6lg.jpeg\" data-image-id=\"1*-kKopMRmgn09Er-afbG6lg.jpeg\" data-width=\"827\" data-height=\"175\" />\n<p class=\"graf graf--p\">Một ví dụ làm việc của điều này có thể được tìm thấy <a class=\"markup--anchor markup--p-anchor\" href=\"https://github.com/graphprotocol/example-subgraph/tree/371232cf68e6d814facf5e5413ad0fef65144759\" target=\"_blank\" rel=\"noopener\" data-href=\"https://github.com/graphprotocol/example-subgraph/tree/371232cf68e6d814facf5e5413ad0fef65144759\">ở đây</a>.</p>\n<p class=\"graf graf--p\">Lưu ý;: Cách tiếp cận này cũng có thể được áp dụng trong các tình huống phức tạp hơn, trong đó cần phải thay thế nhiều hơn địa chỉ hợp đồng và tên mạng hoặc nơi tạo bản đồ hoặc ABI từ các mẫu.</p>\n<h3 class=\"graf graf--h3\">Kiểm tra tình trạng đồ thị con</h3>\n<p class=\"graf graf--p\">Nếu một đồ thị con đồng bộ hóa thành công, đó là một dấu hiệu tốt cho thấy nó sẽ tiếp tục chạy tốt mãi mãi. Tuy nhiên, các trình kích hoạt mới trên chuỗi có thể khiến đồ thị con của bạn gặp phải tình trạng lỗi chưa được kiểm tra hoặc nó có thể bắt đầu tụt hậu do các vấn đề về hiệu suất hoặc sự cố với các nhà khai thác nút.</p>\n<p class=\"graf graf--p\">Graph Node hiển thị một điểm cuối graphql mà bạn có thể truy vấn để kiểm tra trạng thái của đồ thị con của mình. Trên dịch vụ được lưu trữ, nó có sẵn tại <a class=\"markup--anchor markup--p-anchor\" href=\"https://api.thegraph.com/index-node/graphql.\" target=\"_blank\" rel=\"noopener\" data-href=\"https://api.thegraph.com/index-node/graphql.\">https://api.thegraph.com/index-node/graphql.</a> Lược đồ đầy đủ cho điểm cuối này có thể được tìm thấy tại đây. Đây là một truy vấn mẫu kiểm tra trạng thái của phiên bản hiện tại của một đồ thị con:</p>\n<img class=\"graf-image\" src=\"https://cdn-images-1.medium.com/max/800/1*HzkvA_janfJvcpyFnfpN2w.jpeg\" data-image-id=\"1*HzkvA_janfJvcpyFnfpN2w.jpeg\" data-width=\"829\" data-height=\"579\" />\n<p class=\"graf graf--p\">Thao tác này sẽ cung cấp cho bạn chainHeadBlock mà bạn có thể so sánh với latestBlock mới nhất trên đồ thị con của mình để kiểm tra xem nó có đang chạy phía sau hay không. synced thông báo nếu đồ thị con đã từng bắt kịp chuỗi. health hiện có thể nhận các giá trị healthy nếu không có lỗi xảy ra hoặc failed nếu có lỗi làm dừng tiến trình của đồ thị con. Trong trường hợp này, bạn có thể kiểm tra trường fatalError để biết chi tiết về lỗi này.</p>\nDiscord: justacryptonoob#0840\n<h3 class=\"graf graf--h3\">Reference</h3>\nhttps://thegraph.com/docs/deploy-a-subgraph",
"json_metadata": "{\"tags\":[\"thegraph\",\"graphprotocol\",\"ethereum\",\"blockchain\"],\"image\":[\"https://cdn-images-1.medium.com/max/800/1*YoHCYQiR3u9V4EMIMYQY2w.jpeg\",\"https://cdn-images-1.medium.com/max/800/1*azQm5NB_aeFjrP3KJORP4w.jpeg\",\"https://cdn-images-1.medium.com/max/800/1*40LvuM6c0CI3aPats12gFQ.jpeg\",\"https://cdn-images-1.medium.com/max/800/1*mykYdsI5JSBCK2K6K5okFg.jpeg\",\"https://cdn-images-1.medium.com/max/800/1*-kKopMRmgn09Er-afbG6lg.jpeg\",\"https://cdn-images-1.medium.com/max/800/1*HzkvA_janfJvcpyFnfpN2w.jpeg\"],\"links\":[\"https://github.com/\",\"https://thegraph.com/explorer/\",\"https://thegraph.com/explorer/dashboard\",\"https://api.thegraph.com/deploy/\",\"https://thegraph.com/docs/define-a-subgraph\",\"https://mustache.github.io/\",\"https://handlebarsjs.com/\",\"https://github.com/graphprotocol/example-subgraph/tree/371232cf68e6d814facf5e5413ad0fef65144759\",\"https://api.thegraph.com/index-node/graphql.\",\"https://thegraph.com/docs/deploy-a-subgraph\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "thegraph",
"permlink": "trien-khai-mot-subgraph-do-thi-con",
"title": "Triển khai một Subgraph (đồ thị con)"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-05T08:55:54",
"trx_id": "fe2432e51a4505e4ecb2577ca210576600cbae9a",
"trx_in_block": 3,
"virtual_op": 0
}steemdelegated 1.181 SP to @nhanhoang912020/11/02 23:17:42
steemdelegated 1.181 SP to @nhanhoang91
2020/11/02 23:17:42
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 1920.017158 VESTS |
| Transaction Info | Block #48266820/Trx ee688b4de7142943edb8db5306ae89a28fb2183b |
View Raw JSON Data
{
"block": 48266820,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "1920.017158 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-11-02T23:17:42",
"trx_id": "ee688b4de7142943edb8db5306ae89a28fb2183b",
"trx_in_block": 3,
"virtual_op": 0
}steemdelegated 5.881 SP to @nhanhoang912020/05/09 09:27:00
steemdelegated 5.881 SP to @nhanhoang91
2020/05/09 09:27:00
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 9563.887551 VESTS |
| Transaction Info | Block #43221382/Trx ec1e11cec72922767fb01a6d833b81956c2f63b7 |
View Raw JSON Data
{
"block": 43221382,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "9563.887551 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-05-09T09:27:00",
"trx_id": "ec1e11cec72922767fb01a6d833b81956c2f63b7",
"trx_in_block": 16,
"virtual_op": 0
}steemdelegated 1.201 SP to @nhanhoang912020/05/08 13:36:45
steemdelegated 1.201 SP to @nhanhoang91
2020/05/08 13:36:45
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #43198137/Trx ab61e327976e2602c92154a8ec8fc3dbb7e22eb9 |
View Raw JSON Data
{
"block": 43198137,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "1953.311140 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-05-08T13:36:45",
"trx_id": "ab61e327976e2602c92154a8ec8fc3dbb7e22eb9",
"trx_in_block": 0,
"virtual_op": 0
}steemdelegated 5.934 SP to @nhanhoang912019/12/05 13:00:48
steemdelegated 5.934 SP to @nhanhoang91
2019/12/05 13:00:48
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 9650.076059 VESTS |
| Transaction Info | Block #38771733/Trx b5f11323783cb79c74360e2c4ce99502ec602a85 |
View Raw JSON Data
{
"block": 38771733,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "9650.076059 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2019-12-05T13:00:48",
"trx_id": "b5f11323783cb79c74360e2c4ce99502ec602a85",
"trx_in_block": 3,
"virtual_op": 0
}2019/09/17 09:56:00
2019/09/17 09:56:00
| author | steemitboard |
| body | Congratulations @nhanhoang91! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@nhanhoang91/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@nhanhoang91) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=nhanhoang91)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| parent author | nhanhoang91 |
| parent permlink | aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese |
| permlink | steemitboard-notify-nhanhoang91-20190917t095559000z |
| title | |
| Transaction Info | Block #36497349/Trx d5b8fea089ef7c0b6e8fb043832b0760e22af144 |
View Raw JSON Data
{
"block": 36497349,
"op": [
"comment",
{
"author": "steemitboard",
"body": "Congratulations @nhanhoang91! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@nhanhoang91/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@nhanhoang91) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=nhanhoang91)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
"parent_author": "nhanhoang91",
"parent_permlink": "aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese",
"permlink": "steemitboard-notify-nhanhoang91-20190917t095559000z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-09-17T09:56:00",
"trx_id": "d5b8fea089ef7c0b6e8fb043832b0760e22af144",
"trx_in_block": 4,
"virtual_op": 0
}steemdelegated 6.055 SP to @nhanhoang912019/01/02 11:37:36
steemdelegated 6.055 SP to @nhanhoang91
2019/01/02 11:37:36
| delegatee | nhanhoang91 |
| delegator | steem |
| vesting shares | 9847.163546 VESTS |
| Transaction Info | Block #29101891/Trx f088d28140c7e882f4cbcbec37d0c4f4862aeb11 |
View Raw JSON Data
{
"block": 29101891,
"op": [
"delegate_vesting_shares",
{
"delegatee": "nhanhoang91",
"delegator": "steem",
"vesting_shares": "9847.163546 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-02T11:37:36",
"trx_id": "f088d28140c7e882f4cbcbec37d0c4f4862aeb11",
"trx_in_block": 6,
"virtual_op": 0
}2018/10/03 09:55:00
2018/10/03 09:55:00
| author | nhanhoang91 |
| permlink | aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese |
| voter | sensation |
| weight | 10000 (100.00%) |
| Transaction Info | Block #26480724/Trx 0014147be49b4f671bb83dcf36a4ae084b1ed6f3 |
View Raw JSON Data
{
"block": 26480724,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese",
"voter": "sensation",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-10-03T09:55:00",
"trx_id": "0014147be49b4f671bb83dcf36a4ae084b1ed6f3",
"trx_in_block": 14,
"virtual_op": 0
}2018/10/03 09:43:42
2018/10/03 09:43:42
| author | nhanhoang91 |
| body | JOv6mAlz9Rs |
| json metadata | {"tags":["aergo"],"app":"steemit/0.1"} |
| parent author | aergo |
| parent permlink | steemit-account-verification |
| permlink | re-aergo-steemit-account-verification-20181003t094336417z |
| title | |
| Transaction Info | Block #26480498/Trx aa1a1af3ce7476c399d8bb46d8f50bb7be989c23 |
View Raw JSON Data
{
"block": 26480498,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "JOv6mAlz9Rs",
"json_metadata": "{\"tags\":[\"aergo\"],\"app\":\"steemit/0.1\"}",
"parent_author": "aergo",
"parent_permlink": "steemit-account-verification",
"permlink": "re-aergo-steemit-account-verification-20181003t094336417z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2018-10-03T09:43:42",
"trx_id": "aa1a1af3ce7476c399d8bb46d8f50bb7be989c23",
"trx_in_block": 13,
"virtual_op": 0
}2018/10/03 09:10:09
2018/10/03 09:10:09
| author | nhanhoang91 |
| body | @@ -2826,17 +2826,17 @@ r (2%0A)%0A1 -. +/ V%E1%BA%A4N %C4%90%E1%BB%80 @@ -4396,17 +4396,17 @@ ef767%0A%0A2 -. +/ SQL V%C3%80 @@ -5231,17 +5231,17 @@ .jpg)%0A%0A3 -. +/ THI%E1%BA%BET K @@ -6652,17 +6652,17 @@ OSQL.%0A%0A4 -. +/ NH%E1%BB%AENG S |
| json metadata | {"tags":["aergo","smartcontract","aergosql","whitepaper","blockchain"],"image":["https://cdn.steemitimages.com/DQmeWbzaGGsWrMpSRLnQKyUT9o2fWA738dfin7JXqvosGxB/hihi%20(1).png","https://cdn.steemitimages.com/DQmTdko1MQHsMbWWZAzHytF5CpHGXfR13iu4JUKFLxnVmoX/Screenshot_1%20(1).jpg"],"links":["https://AERGO.io","https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf","http://www.wiredtiger.com/","https://github.com/ethereum/wiki/wiki/White-Paper#scripting","https://eprint.iacr.org/2016/1007.pdf","https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767","http://www.antlr.org/","https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | aergo |
| permlink | aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese |
| title | AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối) - Vietnamese |
| Transaction Info | Block #26479827/Trx 25ff135fdde8f19e2fdd6ec5d11ebe5cfb2f5a4c |
View Raw JSON Data
{
"block": 26479827,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "@@ -2826,17 +2826,17 @@\n r (2%0A)%0A1\n-.\n+/\n V%E1%BA%A4N %C4%90%E1%BB%80 \n@@ -4396,17 +4396,17 @@\n ef767%0A%0A2\n-.\n+/\n SQL V%C3%80 \n@@ -5231,17 +5231,17 @@\n .jpg)%0A%0A3\n-.\n+/\n THI%E1%BA%BET K\n@@ -6652,17 +6652,17 @@\n OSQL.%0A%0A4\n-.\n+/\n NH%E1%BB%AENG S\n",
"json_metadata": "{\"tags\":[\"aergo\",\"smartcontract\",\"aergosql\",\"whitepaper\",\"blockchain\"],\"image\":[\"https://cdn.steemitimages.com/DQmeWbzaGGsWrMpSRLnQKyUT9o2fWA738dfin7JXqvosGxB/hihi%20(1).png\",\"https://cdn.steemitimages.com/DQmTdko1MQHsMbWWZAzHytF5CpHGXfR13iu4JUKFLxnVmoX/Screenshot_1%20(1).jpg\"],\"links\":[\"https://AERGO.io\",\"https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf\",\"http://www.wiredtiger.com/\",\"https://github.com/ethereum/wiki/wiki/White-Paper#scripting\",\"https://eprint.iacr.org/2016/1007.pdf\",\"https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767\",\"http://www.antlr.org/\",\"https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "aergo",
"permlink": "aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese",
"title": "AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối) - Vietnamese"
}
],
"op_in_trx": 0,
"timestamp": "2018-10-03T09:10:09",
"trx_id": "25ff135fdde8f19e2fdd6ec5d11ebe5cfb2f5a4c",
"trx_in_block": 3,
"virtual_op": 0
}2018/10/03 09:07:39
2018/10/03 09:07:39
| author | nhanhoang91 |
| body | Sách trắng AERGOSQL AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối) .png) Lần Cập Nhật Gần Đây Nhất: 17 Tháng 7 2018, AERGO AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain Won-Beom Kim, Trưởng ban kỹ thuật của AERGO Limited MIỄN TRỪ PHÁP LÝ Sách trắng này liên quan đến dự án AERGO và nên được đọc cùng với sách trắng chính thức có tại https://AERGO.io. Tài liệu này và các tài liệu khác có thể được sửa đổi hoặc thay thế bất cứ lúc nào mà không cần thông báo về bất kỳ sự thay đổi hoặc truy cập đến bất kỳ thông tin bổ sung nào. Tài liệu này chỉ là thông tin chung. Nó chứa các phát biểu hướng về tương lai dựa trên niềm tin, cũng như các giả định và thông tin nhất định, của tác giả. Không có đại diện hoặc sự bảo đảm nào về sự đạt được hoặc tính hợp lý của bất kỳ kế hoạch, dự báo tương lai hoặc triển vọng nào trong tài liệu này. Quan điểm và ý kiến được thể hiện trong bài báo này chỉ là của tác giả. Những tuyên bố này không phải là lời khuyên, cũng không phải là một lời đề nghị dưới bất kỳ hình thức nào, và chúng cũng không được dựa vào bất kỳ mục đích nào. Nền tảng AERGO không nhằm mục đích thiết lập chứng khoán hoặc bất kỳ sản phẩm được quản lý nào khác trong bất kỳ lãnh vực pháp lý nào. Nếu cần, vui lòng thu thập thêm các lời khuyên cần thiết từ một chuyên gia có trình độ. Sách trắng này chưa được xem xét bởi bất kỳ cơ quan pháp luật trong bất kỳ lãnh vực pháp lý nào. Tài liệu tham khảo trong sách trắng này của các công ty, mạng lưới và / hoặc các trường hợp sử dụng tiềm năng chỉ nhằm mục đích minh họa. Ngoài các đối tác hoặc nhà cung cấp được đề cập rõ ràng, việc sử dụng bất kỳ tên và thương hiệu của công ty và / hoặc nền tảng nào khác không ngụ ý bất kỳ liên kết, hoặc chứng thực bởi bất kỳ bên nào. TÓM TẮT Sách trắng này mô tả AERGOSQL, công cụ hợp đồng thông minh được đề xuất được dung để hoạt động trên nền tảng AERGO. Nó giả định một mức độ hiểu biết cơ bản liên quan đến mã hóa máy tính, hợp đồng thông minh, lập trình và blockchain. AERGOSQL được đề xuất sẽ hỗ trợ một mô hình dữ liệu quan hệ và định nghĩa logic kinh doanh thông qua ngôn ngữ kịch bản giống PL / SQL. Về AERGOSQL, các mô hình dữ liệu có thể được tạo ra bằng cách sử dụng ngôn ngữ định nghĩa dữ liệu (“DDL”) và được thao tác hoặc được truy cập bằng ngôn ngữ thao tác dữ liệu. Logic kinh doanh sử dụng mô hình dữ liệu có thể được tạo và dẫn ra bằng cú pháp giống như PL / SQL. Để hỗ trợ hiệu suất cấp độ doanh nghiệp, AERGOSQL đề xuất xử lý các định nghĩa hợp đồng thông minh và thực hiện thông qua LLVM để sử dụng trình biên dịch JIT (1). Công cụ lưu trữ có thể kết nối hỗ trợ bằng cách cho phép tận dụng các công cụ lưu trữ có thể mở rộng như là WiredTiger (2 ) 1. VẤN ĐỀ VỚI CÁC HỢP ĐỒNG THÔNG MINH Các hệ thống xử lý blockchain chủ đạo như Ethereum thường làm việc một cách thủ tục, hỗ trợ Turing-complete (*) cho các hợp đồng thông minh.(3) Trong khi một hợp đồng thông minh theo thủ tục hỗ trợ cho phép các ứng dụng linh hoạt hơn, tính linh hoạt cũng là nguyên nhân gây nên nhiều lỗi và lỗ hổng hơn. (4) (*)Turing-complete: Một đặc trưng chính của Ethereum, cho phép tính toán mọi thứ tư thời gian cho đến mức tiêu thụ điện chỉ vừa đủ và tiết kiệm thời gian. Vì phần lớn các ngôn ngữ hợp đồng thông minh theo thủ tục được mô hình hóa theo nguyên tắc lập trình hướng đối tượng, việc truy cập dữ liệu trên các hợp đồng thông minh thủ tục cũng thường được mô hình hóa sau các cấu trúc dữ liệu trong bộ nhớ. Các loại ngôn ngữ khác của hợp đồng thông minh hỗ trợ các giao diện mạnh mẽ hơn cho kho lưu trữ giá trị chính hoặc kho lưu trữ tài liệu. (5) Tuy nhiên, chúng tôi tin rằng các chức năng truy cập dữ liệu được cung cấp bởi các ngôn ngữ hợp đồng thông minh thủ tục là nền tảng so với các cơ sở dữ liệu đã xuất hiện từ lâu như cơ sở dữ liệu NoSQL hoặc SQL, và điều này thường dẫn đến việc triển khai trở nên phức tạp và mất thời gian hơn, cùng lúc đó phải làm việc với những sự giới hạn hiện hữu. (1) https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf (2) http://www.wiredtiger.com/ (3) https://github.com/ethereum/wiki/wiki/White-Paper#scripting (4) https://eprint.iacr.org/2016/1007.pdf (5) https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767 2. SQL VÀ CÁC HỢP ĐỒNG THÔNG MINH Các mô hình dữ liệu quan hệ và giao diện SQL cung cấp những cách hiệu quả hơn để truy cập và thao tác dữ liệu được lưu trữ trong sổ cái so với các phương thức thủ tục. Trên thực tế, phần lớn logic kinh doanh được yêu cầu bởi hầu hết các trường hợp sử dụng hợp đồng thông minh có thể chỉ được đại diện bởi DDL và các ràng buộc. Các ngôn ngữ kịch bản được thiết kế xung quanh SQL, chẳng hạn như PL / SQL, cung cấp hỗ trợ một cách đầy đủ hơn để xây dựng các hợp đồng thông minh. Hình dưới đây là một ví dụ minh họa của một hệ thống bản quyết toán kế toán được thực hiện bằng cách sử dụng PL / SQL. Hệ thống bản quyết toán kế toán được thực hiện bằng cách sử dụng PL / SQL .jpg) 3. THIẾT KẾ CỦA ARGOSQL Thiết kế đề xuất của AERGOSQL bao gồm ba lớp chức năng. Giao Diện Người Dùng (The Frontend) Giao diện của AERGOSQL phân tích PL / SQL và tạo ra một sự trình bày AST của tập lệnh. Một phương ngữ của PL / SQL được tối ưu hóa để sử dụng trên sổ cái được phép được sử dụng cho cả tính đơn giản lẫn chức năng. ANTLR6 được sử dụng để xử lý EBNF cho phương ngữ PL / SQL và tạo một trình phân tích trong ngôn ngữ Go. Trình Tối Ưu Hóa (The Optimizer) Dựa trên AST phát ra bởi giao diện người dùng, trình tối ưu hóa tạo ra IR của tập lệnh cho LLVM. Để tối đa hóa hiệu suất, trình tối ưu hóa phân bổ các nút phù hợp để thực thi bên trong IR. Giao Diện Lập Trình Trên Server (The Backend) Phần giao diện lập trình của AERGOSQL nhằm mục đích cung cấp lớp trừu tượng cho các chức năng được yêu cầu bởi các nút thực thi được sử dụng bởi IR. Để tối ưu hóa, giao diện lập trình cũng cung cấp số liệu thống kê có liên quan của dữ liệu được duy trì. Sự lựa chọn ưu tiên của giao diện lập trình trong thiết kế ban đầu là WiredTiger, nhưng AERGOSQL sẽ có thể sử dụng bất kỳ lưu trữ dữ liệu nào được hỗ trợ bởi cây tìm kiếm sự cân bằng (b-tree) hoặc cây LSM. Để hỗ trợ các loại thuật toán đồng thuận khác nhau được thực hiện bởi các sổ cái khác nhau, AERGOSQL cung cấp cơ chế điểm-trong-khối để khôi phục và phục hồi. Chức năng này cho phép triển khai blockchain với việc tổ chức lại khối để sử dụng AERGOSQL. 4. NHỮNG SỰ KÉO THEO Giao diện SQL quen thuộc được hỗ trợ bởi AERGOSQL nhằm mục đích cho phép các blockchain hỗ trợ các phương pháp thân thiện với nhà phát triển hơn để xây dựng các hợp đồng thông minh. AERGOSQL tìm cách cải thiện hiệu suất và khả năng mở rộng, do đó cũng sẽ cho phép đòi hỏi nhiều trường hợp sử dụng thực tế phải được thực hiện trên blockchain hơn. (6) http://www.antlr.org/ Nguồn: https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf |
| json metadata | {"tags":["aergo","smartcontract","aergosql","whitepaper","blockchain"],"image":["https://cdn.steemitimages.com/DQmeWbzaGGsWrMpSRLnQKyUT9o2fWA738dfin7JXqvosGxB/hihi%20(1).png","https://cdn.steemitimages.com/DQmTdko1MQHsMbWWZAzHytF5CpHGXfR13iu4JUKFLxnVmoX/Screenshot_1%20(1).jpg"],"links":["https://AERGO.io","https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf","http://www.wiredtiger.com/","https://github.com/ethereum/wiki/wiki/White-Paper#scripting","https://eprint.iacr.org/2016/1007.pdf","https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767","http://www.antlr.org/","https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | aergo |
| permlink | aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese |
| title | AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối) - Vietnamese |
| Transaction Info | Block #26479777/Trx ea36775aed116a0f4bace3b362a54854fdda471b |
View Raw JSON Data
{
"block": 26479777,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "Sách trắng AERGOSQL\nAERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối)\n.png)\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\nLần Cập Nhật Gần Đây Nhất: 17 Tháng 7 2018, AERGO\n\nAERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain\n\nWon-Beom Kim, Trưởng ban kỹ thuật của AERGO Limited\n\nMIỄN TRỪ PHÁP LÝ\n\nSách trắng này liên quan đến dự án AERGO và nên được đọc cùng với sách trắng chính thức có tại https://AERGO.io. Tài liệu này và các tài liệu khác có thể được sửa đổi hoặc thay thế bất cứ lúc nào mà không cần thông báo về bất kỳ sự thay đổi hoặc truy cập đến bất kỳ thông tin bổ sung nào.\n\nTài liệu này chỉ là thông tin chung. Nó chứa các phát biểu hướng về tương lai dựa trên niềm tin, cũng như các giả định và thông tin nhất định, của tác giả. Không có đại diện hoặc sự bảo đảm nào về sự đạt được hoặc tính hợp lý của bất kỳ kế hoạch, dự báo tương lai hoặc triển vọng nào trong tài liệu này. Quan điểm và ý kiến được thể hiện trong bài báo này chỉ là của tác giả. Những tuyên bố này không phải là lời khuyên, cũng không phải là một lời đề nghị dưới bất kỳ hình thức nào, và chúng cũng không được dựa vào bất kỳ mục đích nào. Nền tảng AERGO không nhằm mục đích thiết lập chứng khoán hoặc bất kỳ sản phẩm được quản lý nào khác trong bất kỳ lãnh vực pháp lý nào. Nếu cần, vui lòng thu thập thêm các lời khuyên cần thiết từ một chuyên gia có trình độ.\n\nSách trắng này chưa được xem xét bởi bất kỳ cơ quan pháp luật trong bất kỳ lãnh vực pháp lý nào. Tài liệu tham khảo trong sách trắng này của các công ty, mạng lưới và / hoặc các trường hợp sử dụng tiềm năng chỉ nhằm mục đích minh họa. Ngoài các đối tác hoặc nhà cung cấp được đề cập rõ ràng, việc sử dụng bất kỳ tên và thương hiệu của công ty và / hoặc nền tảng nào khác không ngụ ý bất kỳ liên kết, hoặc chứng thực bởi bất kỳ bên nào.\n\nTÓM TẮT\n\nSách trắng này mô tả AERGOSQL, công cụ hợp đồng thông minh được đề xuất được dung để hoạt động trên nền tảng AERGO. Nó giả định một mức độ hiểu biết cơ bản liên quan đến mã hóa máy tính, hợp đồng thông minh, lập trình và blockchain.\n\nAERGOSQL được đề xuất sẽ hỗ trợ một mô hình dữ liệu quan hệ và định nghĩa logic kinh doanh thông qua ngôn ngữ kịch bản giống PL / SQL. Về AERGOSQL, các mô hình dữ liệu có thể được tạo ra bằng cách sử dụng ngôn ngữ định nghĩa dữ liệu (“DDL”) và được thao tác hoặc được truy cập bằng ngôn ngữ thao tác dữ liệu. Logic kinh doanh sử dụng mô hình dữ liệu có thể được tạo và dẫn ra bằng cú pháp giống như PL / SQL.\n\nĐể hỗ trợ hiệu suất cấp độ doanh nghiệp, AERGOSQL đề xuất xử lý các định nghĩa hợp đồng thông minh và thực hiện thông qua LLVM để sử dụng trình biên dịch JIT (1). Công cụ lưu trữ có thể kết nối hỗ trợ bằng cách cho phép tận dụng các công cụ lưu trữ có thể mở rộng như là WiredTiger (2\n)\n1. VẤN ĐỀ VỚI CÁC HỢP ĐỒNG THÔNG MINH\n\nCác hệ thống xử lý blockchain chủ đạo như Ethereum thường làm việc một cách thủ tục, hỗ trợ Turing-complete (*) cho các hợp đồng thông minh.(3) Trong khi một hợp đồng thông minh theo thủ tục hỗ trợ cho phép các ứng dụng linh hoạt hơn, tính linh hoạt cũng là nguyên nhân gây nên nhiều lỗi và lỗ hổng hơn. (4)\n\n(*)Turing-complete: Một đặc trưng chính của Ethereum, cho phép tính toán mọi thứ tư thời gian cho đến mức tiêu thụ điện chỉ vừa đủ và tiết kiệm thời gian.\n\nVì phần lớn các ngôn ngữ hợp đồng thông minh theo thủ tục được mô hình hóa theo nguyên tắc lập trình hướng đối tượng, việc truy cập dữ liệu trên các hợp đồng thông minh thủ tục cũng thường được mô hình hóa sau các cấu trúc dữ liệu trong bộ nhớ. Các loại ngôn ngữ khác của hợp đồng thông minh hỗ trợ các giao diện mạnh mẽ hơn cho kho lưu trữ giá trị chính hoặc kho lưu trữ tài liệu. (5) Tuy nhiên, chúng tôi tin rằng các chức năng truy cập dữ liệu được cung cấp bởi các ngôn ngữ hợp đồng thông minh thủ tục là nền tảng so với các cơ sở dữ liệu đã xuất hiện từ lâu như cơ sở dữ liệu NoSQL hoặc SQL, và điều này thường dẫn đến việc triển khai trở nên phức tạp và mất thời gian hơn, cùng lúc đó phải làm việc với những sự giới hạn hiện hữu.\n\n (1) https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf\n(2) http://www.wiredtiger.com/\n(3) https://github.com/ethereum/wiki/wiki/White-Paper#scripting\n(4) https://eprint.iacr.org/2016/1007.pdf\n(5) https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767\n\n2. SQL VÀ CÁC HỢP ĐỒNG THÔNG MINH\n\nCác mô hình dữ liệu quan hệ và giao diện SQL cung cấp những cách hiệu quả hơn để truy cập và thao tác dữ liệu được lưu trữ trong sổ cái so với các phương thức thủ tục. Trên thực tế, phần lớn logic kinh doanh được yêu cầu bởi hầu hết các trường hợp sử dụng hợp đồng thông minh có thể chỉ được đại diện bởi DDL và các ràng buộc. Các ngôn ngữ kịch bản được thiết kế xung quanh SQL, chẳng hạn như PL / SQL, cung cấp hỗ trợ một cách đầy đủ hơn để xây dựng các hợp đồng thông minh.\n\nHình dưới đây là một ví dụ minh họa của một hệ thống bản quyết toán kế toán được thực hiện bằng cách sử dụng PL / SQL.\n\n \nHệ thống bản quyết toán kế toán được thực hiện bằng cách sử dụng PL / SQL\n.jpg)\n\n3. THIẾT KẾ CỦA ARGOSQL\n\nThiết kế đề xuất của AERGOSQL bao gồm ba lớp chức năng.\n\nGiao Diện Người Dùng (The Frontend)\n\nGiao diện của AERGOSQL phân tích PL / SQL và tạo ra một sự trình bày AST của tập lệnh. Một phương ngữ của PL / SQL được tối ưu hóa để sử dụng trên sổ cái được phép được sử dụng cho cả tính đơn giản lẫn chức năng. ANTLR6 được sử dụng để xử lý EBNF cho phương ngữ PL / SQL và tạo một trình phân tích trong ngôn ngữ Go.\nTrình Tối Ưu Hóa (The Optimizer)\n\nDựa trên AST phát ra bởi giao diện người dùng, trình tối ưu hóa tạo ra IR của tập lệnh cho LLVM. Để tối đa hóa hiệu suất, trình tối ưu hóa phân bổ các nút phù hợp để thực thi bên trong IR.\n\nGiao Diện Lập Trình Trên Server (The Backend)\n\nPhần giao diện lập trình của AERGOSQL nhằm mục đích cung cấp lớp trừu tượng cho các chức năng được yêu cầu bởi các nút thực thi được sử dụng bởi IR. Để tối ưu hóa, giao diện lập trình cũng cung cấp số liệu thống kê có liên quan của dữ liệu được duy trì. Sự lựa chọn ưu tiên của giao diện lập trình trong thiết kế ban đầu là WiredTiger, nhưng AERGOSQL sẽ có thể sử dụng bất kỳ lưu trữ dữ liệu nào được hỗ trợ bởi cây tìm kiếm sự cân bằng (b-tree) hoặc cây LSM.\n\nĐể hỗ trợ các loại thuật toán đồng thuận khác nhau được thực hiện bởi các sổ cái khác nhau, AERGOSQL cung cấp cơ chế điểm-trong-khối để khôi phục và phục hồi. Chức năng này cho phép triển khai blockchain với việc tổ chức lại khối để sử dụng AERGOSQL.\n\n4. NHỮNG SỰ KÉO THEO\n\nGiao diện SQL quen thuộc được hỗ trợ bởi AERGOSQL nhằm mục đích cho phép các blockchain hỗ trợ các phương pháp thân thiện với nhà phát triển hơn để xây dựng các hợp đồng thông minh. AERGOSQL tìm cách cải thiện hiệu suất và khả năng mở rộng, do đó cũng sẽ cho phép đòi hỏi nhiều trường hợp sử dụng thực tế phải được thực hiện trên blockchain hơn.\n\n(6) http://www.antlr.org/\nNguồn: https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf",
"json_metadata": "{\"tags\":[\"aergo\",\"smartcontract\",\"aergosql\",\"whitepaper\",\"blockchain\"],\"image\":[\"https://cdn.steemitimages.com/DQmeWbzaGGsWrMpSRLnQKyUT9o2fWA738dfin7JXqvosGxB/hihi%20(1).png\",\"https://cdn.steemitimages.com/DQmTdko1MQHsMbWWZAzHytF5CpHGXfR13iu4JUKFLxnVmoX/Screenshot_1%20(1).jpg\"],\"links\":[\"https://AERGO.io\",\"https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf\",\"http://www.wiredtiger.com/\",\"https://github.com/ethereum/wiki/wiki/White-Paper#scripting\",\"https://eprint.iacr.org/2016/1007.pdf\",\"https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767\",\"http://www.antlr.org/\",\"https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "aergo",
"permlink": "aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese",
"title": "AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối) - Vietnamese"
}
],
"op_in_trx": 0,
"timestamp": "2018-10-03T09:07:39",
"trx_id": "ea36775aed116a0f4bace3b362a54854fdda471b",
"trx_in_block": 21,
"virtual_op": 0
}2018/10/03 08:43:45
2018/10/03 08:43:45
| author | nhanhoang91 |
| permlink | aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese |
| voter | hackerzizon |
| weight | 100 (1.00%) |
| Transaction Info | Block #26479299/Trx 1de4ac605e9a1434673320edc7de23b46549bb27 |
View Raw JSON Data
{
"block": 26479299,
"op": [
"vote",
{
"author": "nhanhoang91",
"permlink": "aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese",
"voter": "hackerzizon",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2018-10-03T08:43:45",
"trx_id": "1de4ac605e9a1434673320edc7de23b46549bb27",
"trx_in_block": 13,
"virtual_op": 0
}2018/10/03 08:43:27
2018/10/03 08:43:27
| author | nhanhoang91 |
| body | Sách trắng AERGOSQL AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối) .png) Lần Cập Nhật Gần Đây Nhất: 17 Tháng 7 2018, AERGO AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain Won-Beom Kim, Trưởng ban kỹ thuật của AERGO Limited MIỄN TRỪ PHÁP LÝ Sách trắng này liên quan đến dự án AERGO và nên được đọc cùng với sách trắng chính thức có tại https://AERGO.io. Tài liệu này và các tài liệu khác có thể được sửa đổi hoặc thay thế bất cứ lúc nào mà không cần thông báo về bất kỳ sự thay đổi hoặc truy cập đến bất kỳ thông tin bổ sung nào. Tài liệu này chỉ là thông tin chung. Nó chứa các phát biểu hướng về tương lai dựa trên niềm tin, cũng như các giả định và thông tin nhất định, của tác giả. Không có đại diện hoặc sự bảo đảm nào về sự đạt được hoặc tính hợp lý của bất kỳ kế hoạch, dự báo tương lai hoặc triển vọng nào trong tài liệu này. Quan điểm và ý kiến được thể hiện trong bài báo này chỉ là của tác giả. Những tuyên bố này không phải là lời khuyên, cũng không phải là một lời đề nghị dưới bất kỳ hình thức nào, và chúng cũng không được dựa vào bất kỳ mục đích nào. Nền tảng AERGO không nhằm mục đích thiết lập chứng khoán hoặc bất kỳ sản phẩm được quản lý nào khác trong bất kỳ lãnh vực pháp lý nào. Nếu cần, vui lòng thu thập thêm các lời khuyên cần thiết từ một chuyên gia có trình độ. Sách trắng này chưa được xem xét bởi bất kỳ cơ quan pháp luật trong bất kỳ lãnh vực pháp lý nào. Tài liệu tham khảo trong sách trắng này của các công ty, mạng lưới và / hoặc các trường hợp sử dụng tiềm năng chỉ nhằm mục đích minh họa. Ngoài các đối tác hoặc nhà cung cấp được đề cập rõ ràng, việc sử dụng bất kỳ tên và thương hiệu của công ty và / hoặc nền tảng nào khác không ngụ ý bất kỳ liên kết, hoặc chứng thực bởi bất kỳ bên nào. TÓM TẮT Sách trắng này mô tả AERGOSQL, công cụ hợp đồng thông minh được đề xuất được dung để hoạt động trên nền tảng AERGO. Nó giả định một mức độ hiểu biết cơ bản liên quan đến mã hóa máy tính, hợp đồng thông minh, lập trình và blockchain. AERGOSQL được đề xuất sẽ hỗ trợ một mô hình dữ liệu quan hệ và định nghĩa logic kinh doanh thông qua ngôn ngữ kịch bản giống PL / SQL. Về AERGOSQL, các mô hình dữ liệu có thể được tạo ra bằng cách sử dụng ngôn ngữ định nghĩa dữ liệu (“DDL”) và được thao tác hoặc được truy cập bằng ngôn ngữ thao tác dữ liệu. Logic kinh doanh sử dụng mô hình dữ liệu có thể được tạo và dẫn ra bằng cú pháp giống như PL / SQL. Để hỗ trợ hiệu suất cấp độ doanh nghiệp, AERGOSQL đề xuất xử lý các định nghĩa hợp đồng thông minh và thực hiện thông qua LLVM để sử dụng trình biên dịch JIT (1). Công cụ lưu trữ có thể kết nối hỗ trợ bằng cách cho phép tận dụng các công cụ lưu trữ có thể mở rộng như là WiredTiger (2 ) 1. VẤN ĐỀ VỚI CÁC HỢP ĐỒNG THÔNG MINH Các hệ thống xử lý blockchain chủ đạo như Ethereum thường làm việc một cách thủ tục, hỗ trợ Turing-complete (*) cho các hợp đồng thông minh.(3) Trong khi một hợp đồng thông minh theo thủ tục hỗ trợ cho phép các ứng dụng linh hoạt hơn, tính linh hoạt cũng là nguyên nhân gây nên nhiều lỗi và lỗ hổng hơn. (4) (*)Turing-complete: Một đặc trưng chính của Ethereum, cho phép tính toán mọi thứ tư thời gian cho đến mức tiêu thụ điện chỉ vừa đủ và tiết kiệm thời gian. Vì phần lớn các ngôn ngữ hợp đồng thông minh theo thủ tục được mô hình hóa theo nguyên tắc lập trình hướng đối tượng, việc truy cập dữ liệu trên các hợp đồng thông minh thủ tục cũng thường được mô hình hóa sau các cấu trúc dữ liệu trong bộ nhớ. Các loại ngôn ngữ khác của hợp đồng thông minh hỗ trợ các giao diện mạnh mẽ hơn cho kho lưu trữ giá trị chính hoặc kho lưu trữ tài liệu. (5) Tuy nhiên, chúng tôi tin rằng các chức năng truy cập dữ liệu được cung cấp bởi các ngôn ngữ hợp đồng thông minh thủ tục là nền tảng so với các cơ sở dữ liệu đã xuất hiện từ lâu như cơ sở dữ liệu NoSQL hoặc SQL, và điều này thường dẫn đến việc triển khai trở nên phức tạp và mất thời gian hơn, cùng lúc đó phải làm việc với những sự giới hạn hiện hữu. (1) https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf (2) http://www.wiredtiger.com/ (3) https://github.com/ethereum/wiki/wiki/White-Paper#scripting (4) https://eprint.iacr.org/2016/1007.pdf (5) https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767 2. SQL VÀ CÁC HỢP ĐỒNG THÔNG MINH Các mô hình dữ liệu quan hệ và giao diện SQL cung cấp những cách hiệu quả hơn để truy cập và thao tác dữ liệu được lưu trữ trong sổ cái so với các phương thức thủ tục. Trên thực tế, phần lớn logic kinh doanh được yêu cầu bởi hầu hết các trường hợp sử dụng hợp đồng thông minh có thể chỉ được đại diện bởi DDL và các ràng buộc. Các ngôn ngữ kịch bản được thiết kế xung quanh SQL, chẳng hạn như PL / SQL, cung cấp hỗ trợ một cách đầy đủ hơn để xây dựng các hợp đồng thông minh. Hình dưới đây là một ví dụ minh họa của một hệ thống bản quyết toán kế toán được thực hiện bằng cách sử dụng PL / SQL. Hệ thống bản quyết toán kế toán được thực hiện bằng cách sử dụng PL / SQL .jpg) 3. THIẾT KẾ CỦA ARGOSQL Thiết kế đề xuất của AERGOSQL bao gồm ba lớp chức năng. Giao Diện Người Dùng (The Frontend) Giao diện của AERGOSQL phân tích PL / SQL và tạo ra một sự trình bày AST của tập lệnh. Một phương ngữ của PL / SQL được tối ưu hóa để sử dụng trên sổ cái được phép được sử dụng cho cả tính đơn giản lẫn chức năng. ANTLR6 được sử dụng để xử lý EBNF cho phương ngữ PL / SQL và tạo một trình phân tích trong ngôn ngữ Go. Trình Tối Ưu Hóa (The Optimizer) Dựa trên AST phát ra bởi giao diện người dùng, trình tối ưu hóa tạo ra IR của tập lệnh cho LLVM. Để tối đa hóa hiệu suất, trình tối ưu hóa phân bổ các nút phù hợp để thực thi bên trong IR. Giao Diện Lập Trình Trên Server (The Backend) Phần giao diện lập trình của AERGOSQL nhằm mục đích cung cấp lớp trừu tượng cho các chức năng được yêu cầu bởi các nút thực thi được sử dụng bởi IR. Để tối ưu hóa, giao diện lập trình cũng cung cấp số liệu thống kê có liên quan của dữ liệu được duy trì. Sự lựa chọn ưu tiên của giao diện lập trình trong thiết kế ban đầu là WiredTiger, nhưng AERGOSQL sẽ có thể sử dụng bất kỳ lưu trữ dữ liệu nào được hỗ trợ bởi cây tìm kiếm sự cân bằng (b-tree) hoặc cây LSM. Để hỗ trợ các loại thuật toán đồng thuận khác nhau được thực hiện bởi các sổ cái khác nhau, AERGOSQL cung cấp cơ chế điểm-trong-khối để khôi phục và phục hồi. Chức năng này cho phép triển khai blockchain với việc tổ chức lại khối để sử dụng AERGOSQL. 4. NHỮNG SỰ KÉO THEO Giao diện SQL quen thuộc được hỗ trợ bởi AERGOSQL nhằm mục đích cho phép các blockchain hỗ trợ các phương pháp thân thiện với nhà phát triển hơn để xây dựng các hợp đồng thông minh. AERGOSQL tìm cách cải thiện hiệu suất và khả năng mở rộng, do đó cũng sẽ cho phép đòi hỏi nhiều trường hợp sử dụng thực tế phải được thực hiện trên blockchain hơn. (6) http://www.antlr.org/ Nguồn: https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf |
| json metadata | {"tags":["aergo","smartcontract","aergosql","whitepaper","blockchain"],"image":["https://cdn.steemitimages.com/DQmeWbzaGGsWrMpSRLnQKyUT9o2fWA738dfin7JXqvosGxB/hihi%20(1).png","https://cdn.steemitimages.com/DQmTdko1MQHsMbWWZAzHytF5CpHGXfR13iu4JUKFLxnVmoX/Screenshot_1%20(1).jpg"],"links":["https://AERGO.io","https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf","http://www.wiredtiger.com/","https://github.com/ethereum/wiki/wiki/White-Paper#scripting","https://eprint.iacr.org/2016/1007.pdf","https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767","http://www.antlr.org/","https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | aergo |
| permlink | aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese |
| title | AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối) - Vietnamese |
| Transaction Info | Block #26479293/Trx f923ddc0fd6746941cbd348bac9fa09c75b68476 |
View Raw JSON Data
{
"block": 26479293,
"op": [
"comment",
{
"author": "nhanhoang91",
"body": "Sách trắng AERGOSQL\nAERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối)\n.png)\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\nLần Cập Nhật Gần Đây Nhất: 17 Tháng 7 2018, AERGO\n\nAERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain\n\nWon-Beom Kim, Trưởng ban kỹ thuật của AERGO Limited\n\nMIỄN TRỪ PHÁP LÝ\n\nSách trắng này liên quan đến dự án AERGO và nên được đọc cùng với sách trắng chính thức có tại https://AERGO.io. Tài liệu này và các tài liệu khác có thể được sửa đổi hoặc thay thế bất cứ lúc nào mà không cần thông báo về bất kỳ sự thay đổi hoặc truy cập đến bất kỳ thông tin bổ sung nào.\n\nTài liệu này chỉ là thông tin chung. Nó chứa các phát biểu hướng về tương lai dựa trên niềm tin, cũng như các giả định và thông tin nhất định, của tác giả. Không có đại diện hoặc sự bảo đảm nào về sự đạt được hoặc tính hợp lý của bất kỳ kế hoạch, dự báo tương lai hoặc triển vọng nào trong tài liệu này. Quan điểm và ý kiến được thể hiện trong bài báo này chỉ là của tác giả. Những tuyên bố này không phải là lời khuyên, cũng không phải là một lời đề nghị dưới bất kỳ hình thức nào, và chúng cũng không được dựa vào bất kỳ mục đích nào. Nền tảng AERGO không nhằm mục đích thiết lập chứng khoán hoặc bất kỳ sản phẩm được quản lý nào khác trong bất kỳ lãnh vực pháp lý nào. Nếu cần, vui lòng thu thập thêm các lời khuyên cần thiết từ một chuyên gia có trình độ.\n\nSách trắng này chưa được xem xét bởi bất kỳ cơ quan pháp luật trong bất kỳ lãnh vực pháp lý nào. Tài liệu tham khảo trong sách trắng này của các công ty, mạng lưới và / hoặc các trường hợp sử dụng tiềm năng chỉ nhằm mục đích minh họa. Ngoài các đối tác hoặc nhà cung cấp được đề cập rõ ràng, việc sử dụng bất kỳ tên và thương hiệu của công ty và / hoặc nền tảng nào khác không ngụ ý bất kỳ liên kết, hoặc chứng thực bởi bất kỳ bên nào.\n\nTÓM TẮT\n\nSách trắng này mô tả AERGOSQL, công cụ hợp đồng thông minh được đề xuất được dung để hoạt động trên nền tảng AERGO. Nó giả định một mức độ hiểu biết cơ bản liên quan đến mã hóa máy tính, hợp đồng thông minh, lập trình và blockchain.\n\nAERGOSQL được đề xuất sẽ hỗ trợ một mô hình dữ liệu quan hệ và định nghĩa logic kinh doanh thông qua ngôn ngữ kịch bản giống PL / SQL. Về AERGOSQL, các mô hình dữ liệu có thể được tạo ra bằng cách sử dụng ngôn ngữ định nghĩa dữ liệu (“DDL”) và được thao tác hoặc được truy cập bằng ngôn ngữ thao tác dữ liệu. Logic kinh doanh sử dụng mô hình dữ liệu có thể được tạo và dẫn ra bằng cú pháp giống như PL / SQL.\n\nĐể hỗ trợ hiệu suất cấp độ doanh nghiệp, AERGOSQL đề xuất xử lý các định nghĩa hợp đồng thông minh và thực hiện thông qua LLVM để sử dụng trình biên dịch JIT (1). Công cụ lưu trữ có thể kết nối hỗ trợ bằng cách cho phép tận dụng các công cụ lưu trữ có thể mở rộng như là WiredTiger (2\n)\n1. VẤN ĐỀ VỚI CÁC HỢP ĐỒNG THÔNG MINH\n\nCác hệ thống xử lý blockchain chủ đạo như Ethereum thường làm việc một cách thủ tục, hỗ trợ Turing-complete (*) cho các hợp đồng thông minh.(3) Trong khi một hợp đồng thông minh theo thủ tục hỗ trợ cho phép các ứng dụng linh hoạt hơn, tính linh hoạt cũng là nguyên nhân gây nên nhiều lỗi và lỗ hổng hơn. (4)\n\n(*)Turing-complete: Một đặc trưng chính của Ethereum, cho phép tính toán mọi thứ tư thời gian cho đến mức tiêu thụ điện chỉ vừa đủ và tiết kiệm thời gian.\n\nVì phần lớn các ngôn ngữ hợp đồng thông minh theo thủ tục được mô hình hóa theo nguyên tắc lập trình hướng đối tượng, việc truy cập dữ liệu trên các hợp đồng thông minh thủ tục cũng thường được mô hình hóa sau các cấu trúc dữ liệu trong bộ nhớ. Các loại ngôn ngữ khác của hợp đồng thông minh hỗ trợ các giao diện mạnh mẽ hơn cho kho lưu trữ giá trị chính hoặc kho lưu trữ tài liệu. (5) Tuy nhiên, chúng tôi tin rằng các chức năng truy cập dữ liệu được cung cấp bởi các ngôn ngữ hợp đồng thông minh thủ tục là nền tảng so với các cơ sở dữ liệu đã xuất hiện từ lâu như cơ sở dữ liệu NoSQL hoặc SQL, và điều này thường dẫn đến việc triển khai trở nên phức tạp và mất thời gian hơn, cùng lúc đó phải làm việc với những sự giới hạn hiện hữu.\n\n (1) https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf\n(2) http://www.wiredtiger.com/\n(3) https://github.com/ethereum/wiki/wiki/White-Paper#scripting\n(4) https://eprint.iacr.org/2016/1007.pdf\n(5) https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767\n\n2. SQL VÀ CÁC HỢP ĐỒNG THÔNG MINH\n\nCác mô hình dữ liệu quan hệ và giao diện SQL cung cấp những cách hiệu quả hơn để truy cập và thao tác dữ liệu được lưu trữ trong sổ cái so với các phương thức thủ tục. Trên thực tế, phần lớn logic kinh doanh được yêu cầu bởi hầu hết các trường hợp sử dụng hợp đồng thông minh có thể chỉ được đại diện bởi DDL và các ràng buộc. Các ngôn ngữ kịch bản được thiết kế xung quanh SQL, chẳng hạn như PL / SQL, cung cấp hỗ trợ một cách đầy đủ hơn để xây dựng các hợp đồng thông minh.\n\nHình dưới đây là một ví dụ minh họa của một hệ thống bản quyết toán kế toán được thực hiện bằng cách sử dụng PL / SQL.\n\n \nHệ thống bản quyết toán kế toán được thực hiện bằng cách sử dụng PL / SQL\n.jpg)\n\n3. THIẾT KẾ CỦA ARGOSQL\n\nThiết kế đề xuất của AERGOSQL bao gồm ba lớp chức năng.\n\nGiao Diện Người Dùng (The Frontend)\n\nGiao diện của AERGOSQL phân tích PL / SQL và tạo ra một sự trình bày AST của tập lệnh. Một phương ngữ của PL / SQL được tối ưu hóa để sử dụng trên sổ cái được phép được sử dụng cho cả tính đơn giản lẫn chức năng. ANTLR6 được sử dụng để xử lý EBNF cho phương ngữ PL / SQL và tạo một trình phân tích trong ngôn ngữ Go.\nTrình Tối Ưu Hóa (The Optimizer)\n\nDựa trên AST phát ra bởi giao diện người dùng, trình tối ưu hóa tạo ra IR của tập lệnh cho LLVM. Để tối đa hóa hiệu suất, trình tối ưu hóa phân bổ các nút phù hợp để thực thi bên trong IR.\n\nGiao Diện Lập Trình Trên Server (The Backend)\n\nPhần giao diện lập trình của AERGOSQL nhằm mục đích cung cấp lớp trừu tượng cho các chức năng được yêu cầu bởi các nút thực thi được sử dụng bởi IR. Để tối ưu hóa, giao diện lập trình cũng cung cấp số liệu thống kê có liên quan của dữ liệu được duy trì. Sự lựa chọn ưu tiên của giao diện lập trình trong thiết kế ban đầu là WiredTiger, nhưng AERGOSQL sẽ có thể sử dụng bất kỳ lưu trữ dữ liệu nào được hỗ trợ bởi cây tìm kiếm sự cân bằng (b-tree) hoặc cây LSM.\n\nĐể hỗ trợ các loại thuật toán đồng thuận khác nhau được thực hiện bởi các sổ cái khác nhau, AERGOSQL cung cấp cơ chế điểm-trong-khối để khôi phục và phục hồi. Chức năng này cho phép triển khai blockchain với việc tổ chức lại khối để sử dụng AERGOSQL.\n\n4. NHỮNG SỰ KÉO THEO\n\nGiao diện SQL quen thuộc được hỗ trợ bởi AERGOSQL nhằm mục đích cho phép các blockchain hỗ trợ các phương pháp thân thiện với nhà phát triển hơn để xây dựng các hợp đồng thông minh. AERGOSQL tìm cách cải thiện hiệu suất và khả năng mở rộng, do đó cũng sẽ cho phép đòi hỏi nhiều trường hợp sử dụng thực tế phải được thực hiện trên blockchain hơn.\n\n(6) http://www.antlr.org/\nNguồn: https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf",
"json_metadata": "{\"tags\":[\"aergo\",\"smartcontract\",\"aergosql\",\"whitepaper\",\"blockchain\"],\"image\":[\"https://cdn.steemitimages.com/DQmeWbzaGGsWrMpSRLnQKyUT9o2fWA738dfin7JXqvosGxB/hihi%20(1).png\",\"https://cdn.steemitimages.com/DQmTdko1MQHsMbWWZAzHytF5CpHGXfR13iu4JUKFLxnVmoX/Screenshot_1%20(1).jpg\"],\"links\":[\"https://AERGO.io\",\"https://llvm.org/devmtg/2016-09/slides/Melnik-PostgreSQLLLVM.pdf\",\"http://www.wiredtiger.com/\",\"https://github.com/ethereum/wiki/wiki/White-Paper#scripting\",\"https://eprint.iacr.org/2016/1007.pdf\",\"https://medium.com/wearetheledger/hyperledger-fabric-couchdb-fantastic-queries-and-where-to-find-them-f8a3aecef767\",\"http://www.antlr.org/\",\"https://paper.aergo.io/AERGO_SQL_Whitepaper_V1.0.pdf\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "aergo",
"permlink": "aergosql-mot-cong-cu-hop-dong-thong-minh-moi-cho-blockchain-chuoi-khoi-vietnamese",
"title": "AERGOSQL: Một Công Cụ Hợp Đồng Thông Minh Mới cho Blockchain (Chuỗi khối) - Vietnamese"
}
],
"op_in_trx": 0,
"timestamp": "2018-10-03T08:43:27",
"trx_id": "f923ddc0fd6746941cbd348bac9fa09c75b68476",
"trx_in_block": 8,
"virtual_op": 0
}2018/09/21 16:04:03
2018/09/21 16:04:03
| author | kriptus |
| body | Good article ! subscribed to you and I hope for a mutual subscription |
| json metadata | {"tags":["aergo"],"app":"steemit/0.1"} |
| parent author | nhanhoang91 |
| parent permlink | aergo-when-enterprise-developers-have-full-right-for-borderless-creation |
| permlink | re-nhanhoang91-aergo-when-enterprise-developers-have-full-right-for-borderless-creation-20180921t160401656z |
| title | |
| Transaction Info | Block #26142955/Trx bc19da48e12ee5f00ba292136eeefeceef061412 |
View Raw JSON Data
{
"block": 26142955,
"op": [
"comment",
{
"author": "kriptus",
"body": "Good article ! subscribed to you and I hope for a mutual subscription",
"json_metadata": "{\"tags\":[\"aergo\"],\"app\":\"steemit/0.1\"}",
"parent_author": "nhanhoang91",
"parent_permlink": "aergo-when-enterprise-developers-have-full-right-for-borderless-creation",
"permlink": "re-nhanhoang91-aergo-when-enterprise-developers-have-full-right-for-borderless-creation-20180921t160401656z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2018-09-21T16:04:03",
"trx_id": "bc19da48e12ee5f00ba292136eeefeceef061412",
"trx_in_block": 4,
"virtual_op": 0
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress0.00%
{
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779078405
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779078405
},
"rc_account": {
"account": "nhanhoang91",
"max_rc": "10164408779",
"max_rc_creation_adjustment": {
"amount": "2020748973",
"nai": "@@000000037",
"precision": 6
},
"rc_manabar": {
"current_mana": "10164408779",
"last_update_time": 1779078405
}
}
}Account Metadata
| POSTING JSON METADATA | |
| None | |
| JSON METADATA | |
| None |
{
"posting_json_metadata": {},
"json_metadata": {}
}Auth Keys
Owner
Single Signature
Public Keys
STM7qK3uTAT73p3LXHhpHTPCRaZ2HvMg2V2G5FeDyH8jR8WYP7UCe1/1
Active
Single Signature
Public Keys
STM7C243LXsqT91PQonMvbjU2gUc1SSGXZV2RNQWEasB14QuFuvwH1/1
Posting
Single Signature
Public Keys
STM5sthfE2D5Q933fAnQ49CHq69bbyJvXqQyNgAcGgyaBJ9WBgsFH1/1
Memo
STM8GhHi87MXkQ4twG6hfeg5vpE2mnobXg1auQetBGyHMSxeRt9DH
{
"owner": {
"account_auths": [],
"key_auths": [
[
"STM7qK3uTAT73p3LXHhpHTPCRaZ2HvMg2V2G5FeDyH8jR8WYP7UCe",
1
]
],
"weight_threshold": 1
},
"active": {
"account_auths": [],
"key_auths": [
[
"STM7C243LXsqT91PQonMvbjU2gUc1SSGXZV2RNQWEasB14QuFuvwH",
1
]
],
"weight_threshold": 1
},
"posting": {
"account_auths": [],
"key_auths": [
[
"STM5sthfE2D5Q933fAnQ49CHq69bbyJvXqQyNgAcGgyaBJ9WBgsFH",
1
]
],
"weight_threshold": 1
},
"memo": "STM8GhHi87MXkQ4twG6hfeg5vpE2mnobXg1auQetBGyHMSxeRt9DH"
}Witness Votes
0 / 30
No active witness votes.
[]