技术分享|开发者如何在Flow上使用USDC

Created
Feb 22, 2022 10:43 AM
作者
翻译
Jing
Tags
USDC
notion image
 
什么是USDC?
USDC (USD Coin) 是全球领先的数字美元稳定币,以美元 1 比 1 完全抵押。这意味着每流通 1 个 USDC 代币,就有 1 美元的储备金作为抵押品。事实上:USDC在过去一年里的交易量已经达到了大约1.6万亿美元。
USDC能给Flow带来什么?
USDC 为基于 Flow 的应用打开了与数百家公司、产品和服务无缝交互的大门,包括数字钱包、交易所、DeFi 协议、储蓄、借贷和支付服务。进一步来说:
  • 原生集成:基于 Flow 构建的 Web3 应用程序现在可以使用 USDC 的“法币”智能合约(https://github.com/flow-usdc/flow-usdc)在Flow链上与 USDC 进行原生交互,该合约基于标准的 Fungible Token 接口(测试网和主网部署地址请见本文底部)
  • 跨链兼容性:由于 USDC 也可在以太坊等其他区块链上使用,因此现在Flow比以往任何时候都更容易接触到更多用户与开发者。通过Circle钱包可以通过 账户 API (https://developers.circle.com/docs/introducing-circle-apis) 进行跨链的资金运作。
  • 行业标准法币入口:除了原生智能合约外,USDC 的运营公司 Circle 还提供跨链支付 API (https://www.circle.com/en/payments),使跨卡、ACH 和电汇交易同加密支付一起变得更加容易。
  • DeFi:USDC 是 DeFi 领域最常用的稳定资产,提供安全便捷的高流动性加密资本市场接入,进一步赋能 DeFi on Flow。
开发者如何使用USDC?
开始使用 USDC 的最快方法是注册一个沙盒帐户。这将帮助您熟悉 API 以及如何在 Flow 和跨链 USDC Circle 钱包之间转移资金。
沙盒账户注册地址:
https ://my-sandbox.circle.com/signup.
DEMO
下面将演示如何在 Flow 和您的跨链 Circle USDC 钱包之间转移 USDC 资金。
首先,您需要获取沙盒环境的 API key。为此,只需创建一个帐户并在设置中生成一个新密钥。
获取 API 密钥:
https://my-sandbox.circle.com/signup
  • *注意:接口可能会改变/废弃,所以具体请查看官方文档
(https://developers.circle.com/docs) 获取最新信息!
■将 USDC 从 Flow 转移到 Circle 钱包
1.创建一个新的钱包
出于快速演示的目的,我们将创建一个全新的钱包来接收来自 Flow 的资金。您可以使用create wallet endpoint(https://developers.circle.com/reference#dda-wallets-create)创建新的托管钱包。
使用以下命令创建钱包(需要配置idempotency key),或者使用在线API。
  • *idemotency Key: https://developers.circle.com/docs/a-note-on-idempotent-requests
  • *在线API:https://developers.circle.com/reference#accounts-wallets-create
cURL Request
# 替换 ${YOUR_API_KEY} 成前文获取的API keycurl -H 'Content-type: application/json' \\  -H "Authorization: Bearer ${YOUR_API_KEY}" \\  -X POST <https://api-sandbox.circle.com/v1/wallets> \\  --data '{"idempotencyKey": "4ddef365-f2fc-4a56-95f5-a214c84ba8f4"}'
Request Body
{  "data":{    "walletId":"1000005062",// 钱包ID    "entityId":"7cbdedb1-d526-46b4-af12-4162a002eb9c",    "type":"end_user_wallet",    "balances":[]  }}
2.创建收款地址
钱包本身并不依赖于特定的区块链。相反,我们为钱包生成多链的存款地址,允许我们接收来自不同链的转账。创建Flow上的存款地址 generate new address endpoint (https://developers.circle.com/reference#dda-wallets-addresses-create)需要设置 currency属性为USD 和chain属性为FLOW,以确保 API 为 Flow 区块链生成 USDC 存款地址。使用以下命令为您的钱包创建一个存款地址,或者使用在线API(https://developers.circle.com/reference#accounts-wallets-addresses-create)
cURL Request
# 替换 ${YOUR_API_KEY} with your API key# 替换 ${WALLET_ID} with the wallet id from the previous stepcurl -H 'Accept: application/json' \\  -H 'content-type: application/json' \\  -H "Authorization: Bearer ${YOUR_API_KEY}" \\  -X POST --url <https://api-sandbox.circle.com/v1/wallets/${WALLET_ID}/addresses> \\  --data '{"idempotencyKey": "ed9a7b3b-b45f-4262-a8aa-8dfee5a4f31b", "currency": "USD", "chain": "FLOW"}'
Request Body
{  "data":{    "address":"0xb31a443a15e890fb",// 生成的收款地址在Flow上    "currency":"USD",    "chain":"FLOW"  }}
3. 收款
⚠️⚠️警告!不要将真实的USDC 发送到沙盒环境中生成的地址,因为您的资金可能会永久丢失。
接下来,是时候从 Flow 区块链转移资金了。Circle的沙盒环境已连接到Flow的Testnet网络,因此您可以将 USDC 从 Testnet 钱包发送到您的 Circle 托管钱包。访问USDC on Testing Networks 了解更多关于其他区块链的支持。
如果您需要为测试账户注入USDC,可以使用USDC 水龙头获取一些 USDC 进行测试。访问usdcfaucet.com并确保选择 FLOW 按钮。粘贴您在上面创建的存款地址(小心不要错过任何字符)并点击提交。
4.查看转账状态
您可以使用retrive transfers endpoint来查询钱包的交易记录。使用一下命令,或者使用在线API
cURL Request
# 替换 ${YOUR_API_KEY} with your API key# 替换 ${WALLET_ID} with the wallet id from the previous stepcurl -H "Authorization: Bearer ${YOUR_API_KEY}" \\     -X GET <https://api-sandbox.circle.com/v1/transfers?destinationWalletId=${WALLET_ID}>
Request Body
{  "data":[    {      "id":"9f6362f4-a3d2-396e-a1eb-b628ec3a29b2",      "source":{        "type":"blockchain",        "chain":"FLOW"      },      "destination":{        "type":"wallet",        "id":"1000005062",        "address":"0xb31a443a15e890fb"      },      "amount":{        "amount":"1.00",        "currency":"USD"      },      "transactionHash":"6dd4144cb1593c08e1dd13c12278c2b21cdfd8fc66edbb32153ad1fdbe7552a6",      "status":"running",      "createDate":"2022-01-10T18:50:06.202Z"    }  ]}
您可以通过transactionHash在Flow Testnet Explorer上查询交易细节。
一旦状态更改为Complete(并且仅完成一次),Circle 会将转账的金额记入接收钱包。请参阅 Circle 的确认指南,了解不同链的区块确认要求。
恭喜!我们已经使用 Circle 的 Accounts API 成功收到了 USDC。现在让我们看看如何将资金从我们新创建的钱包转移到 Flow 地址。
■ 将 USDC 资金从 Circle 钱包转移到流地址
1. 发送资金
我们在前文新创建并从Flow获得存款的Circle钱包(也可以从其他区块链存款,例如以太坊 USDC),现在可以使用以下命令启动 USDC 到 Flow 地址的转移。命令如下,或使用在线API进行USDC转移。
cURL Request
# 替换 ${YOUR_API_KEY} with your API key# 替换 ${YOUR_WALLET_ID} with your master wallet id# 替换 ${YOUR_DEPOSIT_ADDRESS} with your blockchain addresscurl -H 'Accept: application/json' \\  -H 'Content-type: application/json' \\  -H "Authorization: Bearer ${YOUR_API_KEY}" \\  -X POST <https://api-sandbox.circle.com/v1/transfers> \\  --data '{"idempotencyKey": "fbba9d81-72f1-4bf8-97c8-99f1f28995e2", "source": {"type": "wallet", "id": "${YOUR_WALLET_ID}"}, "destination": {"type": "blockchain", "address": "${YOUR_DEPOSIT_ADDRESS}", "chain": "FLOW"}, "amount": {"amount": "1.00", "currency": "USD"}}'
Request Body
{  "data":{    "id":"9dd86dfe-72e8-4182-9573-04196cc7d6cb",    "source":{      "type":"wallet",      "id":"1000005062"    },    "destination":{      "type":"blockchain",      "address":"0xb31a443a15e890fb",      "chain":"FLOW"    },    "amount":{      "amount":"1.00",      "currency":"USD"    },    "status":"pending",    "createDate":"2022-01-11T20:31:39.507Z"  }}
  • *注意!收款的Flow地址下如果是第一次使用USDC,转账交易会失败,收款地址需要创建本地USDC的receiver vault
2.查看转账状态
同样,您可以使用get transfer endpoint来检索有关交易状态的详细信息。您可以使用下面的命令。
cURL Request
 
# 替换 ${YOUR_API_KEY} with your API key# 替换 ${TRANSFER_ID} with the id of the transfer you created earliercurl -H "Authorization: Bearer ${YOUR_API_KEY}" \\     -X GET <https://api-sandbox.circle.com/v1/transfers/${TRANSFER_ID}>
Request Body
{  "data":{    "id":"9dd86dfe-72e8-4182-9573-04196cc7d6cb",    "source":{      "type":"wallet",      "id":"1000005062"    },    "destination":{      "type":"blockchain",      "address":"0xb31a443a15e890fb",      "chain":"FLOW"    },    "amount":{      "amount":"1.00",      "currency":"USD"    },    "transactionHash":"b51bb89d3b6400fa0fe664adb9f161c92ade97a07b13ed08b9d04be12d403c5d",    "status":"complete",    "createDate":"2020-09-23T21:35:03.563Z"  }}
以上只是一个demo演示,具体详情建议您阅读官方文档,Happy building!
Useful Links
Documentation
  • Circle开发者帐户注册:https ://my-sandbox.circle.com/signup
  • Circle API 文档:https ://developers.circle.com/docs
  • Circle API 参考:https ://developers.circle.com/reference
  • 合约地址:https ://github.com/flow-usdc/flow-usdc
Flow上 USDC 合约地址
  • 主网:
    • USDC 主网账户地址:0xb19436aae4d94622
    • USDC 主网合约:A.b19436aae4d94622.FiatToken
  • 测试网:
    • USDC 测试网账户地址:0xa983fecbed621163
    • USDC 测试网合约:A.a983fecbed621163.FiatToken