技术分享|Flow USDC合约分析与链上链下多签实现分享
本文作者:Jing,Flow中文社区技术大使。转载请备注来源。
Circle部署在Flow上的FiatToken.cdc合约写的较为复杂,因为该USDC合约不仅仅为了支持Flow Fungible Token标准,还尝试在Flow上兼容ERC20与CENTRE TOKEN的相关标准,比如黑名单、交易冻结、allowance等。
参考文档:https://github.com/flow-usdc/flow-usdc
为此,Circle描述了一个FiatTokenInterface.cdc接口,但在主网实际部署USDC合约时,因为某种原因,并没有继承该interface,只实现了一些角色管理和基础FT接口。
https://flow-view-source.com/mainnet/account/0xb19436aae4d94622/contract/FiatToken
allowance/approve其实在FiatTokenInterface.cdc和TRANSACTIONS.md中是有实现的,不过withdraw_allowance.cdc中存在一定漏洞(没有对tx发起人做检验)。
FiatTokenInterface.cdc:https://github.com/flow-usdc/flow-usdc/blob/main/contracts/FiatTokenInterface.cdc
TRANSACTIONS.md: https://github.com/flow-usdc/flow-usdc/blob/main/doc/TRANSACTIONS.md
FiatToken的角色管理
FiatToken.cdc一个长达1300多行的FT合约,绝大部分都是在做角色管理:admin,owner,masterMinter,minter,pauser,blacklister 。
下面是Docs里的图:


Flow的代码结构偏组件化编程,不太方便阅读,换一种示意以有助于理解角色关系:

Minter负责mint和burn,MinterController负责设置allowance值,且Minter与Mintercontroller是一一对应的,需要绑定通过MasterMinter认证。
各种Executor资源都是唯一创建并存储在合约部署地址下的。
可以有多个Admin资源拥有者,通过AdminExecutor进行ExecutorCapability签发。
Pause、MasterMinter、Blocklist的ExecutorCapability获取则需要通过Owner来控制。
对权限的管理都是通过资源uuid完成的,Minter可以恶意转移或是暴露cap。
Circle链上多签协议OnChainMultiSig.cdc
链接:https://flow-view-source.com/mainnet/account/0x220c1b4155f86f2f/contract/OnChainMultiSig
Circle实现了一套链上的多签协议,允许多个签名在链上来授权一笔tx,而绕过链下多次签名的流程限制。如果有相同的多签需求或是投票治理等场景可以有些借鉴。
用FiatToken.cdc中Admin resource的多签使用举例:

值得注意的是:
待多签的tx的代码实现需要被封装在合约里,并在Payload里进行描述,比如tx序列id、method 名字,参数等,需要签名的部分也是这个Playload描述。
每个签名者都可以单独对这笔tx上传签名认证。
当完成签名的钥匙权重合>1000后,可以调用readyForExecution执行相关tx代码;否则继续等待签名。
多种不同的等待签名的tx都会在OnChainMultiSig.Manager中进行管理。
这个多签体系有个地方需要讨论:假设一笔tx,当前有5个人可签名,但增加第6个签名者的操作只需要5个人中的任意1人即可发起。
补充正常多签流程
Flow文档描述:https://docs.onflow.org/concepts/transaction-signing/
包含4种: 单地址单key、单地址多key、多地址单key,多地址多key
■ 使用Cli完成多签流程:
链接:https://docs.onflow.org/flow-cli/complex-transactions/
一次tx的签名管线如下:
Build: encode the source code using rlp or the "Recursive Length Prefix" encoding.
Sign: cryptographically sign the encoded source code.
Send: deliver the encoded source code with the signatures to a Flow Access Node.
举例:
transaction() {prepare(signerA: AuthAccount, signerB: AuthAccount) {
一次tx可以被拆解成多步,由中间签名字串传递。
Step 1:
flow transactions build ./helloworld_tx.cdc \--proposer testnet-A \--payer testnet-A \--authorizer testnet-A \--authorizer testnet-B \--filter payload \--save transaction.build.rlp
Step 2:
flow transactions sign ./transaction.build.rlp \--signer testnet-B \--filter payload \--save transaction.signed.B.rlp \-yflow transactions sign ./transaction.signed.B.rlp \--signer testnet-A \--filter payload \--save transaction.signed.rlp \-y
Step 3:
flow transactions send-signed ./transaction.signed.rlp -yTips:
注意签名顺序,payer需要最后签
当同地址多个key时,在accounts里可以这么配置:
"key1": {"address": "0x4","key": "444...444"},"key2": {"address": "0x4","key": "555...555"}
FCL链下多签
可以参考:https://github.com/onflow/flow-multisig
与Cli的分步签名接口类似,Fcl中有类似的接口。
该工程里使用supabase做了baas服务,发起的签名请求payload和生成的rlp中间编码字串都会在云数据库里存储。待签名的人可以fcl前端登录,然后查询数据库获取需要签名的rlp字串进行签名。
END
什么是Flow福洛链?
Flow福洛链是一个快速,去中心化,且对开发者友好的区块链,旨在为新一代游戏、娱乐应用程序提供动力的数字资产的基础。Flow是唯一一个由始至终为消费者提供出色体验的Layer-1区块链团队。其团队创造的dApp包括:CryptoKitties、Dapper Wallets、NBA Top shot。
CrytoKitties于2017年推出时便快速成为加密市场最受欢迎的dApp,因其成功而导致以太坊堵塞。在Flow上运营的NBA Top shot也已成为增长最快的dApp,在公开发布后的6个月创造了7亿美金销量。正因为Flow公链的可扩展性和消费者友好的体验,让这一切成为可能。目前有300多个项目正在Flow链上筹备中,我们期待看到一个伟大的生态系统蓬勃发展。
关于Dapper Labs
Dapper Labs是一家位于加拿大的全球顶尖区块链服务商,在2017 年年底通过CryptoKitties收藏游戏成功进入⽤户视野,并且因为加密猫的爆⽕导致以太坊拥堵,从而推出Flow公链以及全新的开发语言—— Cadence,旨在吸引更多的开发者在Flow 上开发应⽤。
Flow的合作伙伴们:








我们欢迎越来越多的小伙伴加入Flow星球,为星球增添色彩!
Flow 官网:https://zh.onflow.org/
Flow 论坛: https://forum.onflow.org/
Flow Discord:
https://discord.com/invite/flow
Flow CN Telegram: https://t.me/flow_zh
Flow B站:https://space.bilibili.com/1002168058
Flow 微博:
https://weibo.com/7610419699
Flow CSDN:
https://blog.csdn.net/weixin_57551966?spm=1010.2135.3001.5343

扫码添加Flow官方账号微信号,加入Flow生态群
微信号 : FlowChainOfficial
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
您可能感兴趣
-
亚洲股市熔断式暴跌,韩国盘中触发熔断机制,日经跌破5万点大关
华尔街警告:这只是开始,AI泡沫破裂引发的恐慌才刚刚开始。作者:金十数据周三亚洲股市追随隔夜美股的抛售,投资者对估值过高的担忧削弱了市场信心。截至发稿,韩国股市以逾6%的跌幅领跌,因估值担忧重创了近期
-
早报 | 美股收盘,道指跌 225 点,纳指涨 0.46%;比特币借贷平台 Lava 宣布完成 2 亿美元融资;代币网络协议遭黑客攻击,以太坊一度暴跌 9%整理:ChainCatcher 重要资讯:代币网络协议遭黑客攻击,以太坊一度暴跌 9% 数据:加密板块全线下挫,BTC 跌破 10.8 万美元,ETH 一度跌近 8% 易理华:当前加密市场过度恐慌,
-
加密早报:BTC 今晨跌破 10 万美元,渣打将于香港推出 BTC 和 ETH 托管服务
AlphaTON Capita成立合资公司拟推出TON Card加密支付卡项目。作者:深潮 TechFlow昨日市场动态BTC今晨跌破10万美元大关,ETH失守3100美元HTX行情显示,BTC今晨跌
-
华尔街持续抛售,比特币还要跌到哪里11 月的第一周,币圈情绪很差。比特币已经下探到「10.11」大暴跌的更低点,没守住 10 万美元大关,甚至跌破 9.9 万美元,是这半年里的新低,以太坊最低触及 3000 美元。全网 24 小时爆仓
-
市场面临显着回调,这次是周期中点还是终点?作者: Chloe, ChainCatcher11 月才刚过四天,加密市场就经历了显着回调,比特币过去一个月下跌近 13%,从此前的高点回落至 10.4 万美元附近,价格反复震荡。ETH 交易价格同期
-
NeoBank 年鉴:一篇速通Neobank 现状
随着新型银行(Neobank)生态系统的成熟,它们将成为数字经济的操作层。作者:Stacy Muur编译:深潮TechFlow这是我在 X 平台或 Substack 上发布的最详细的文章之一。起初,我
-
那年夏天,我在 DEX 上狙击山寨赚了 5000 万美元
从最初仅有的 4 万美元起步,最终,我们在超过 10 条不同链上狙击了 200 多种山寨币。作者:CBB编译:深潮TechFlow2020 年 8 月。我的哥哥在大学教授 IT 课程,而我刚刚结束了在
-
市场寒冬下的逆行者:Ju.com 10 月用户增长背后的增长密码自2025年10月10日的大跌后,全球加密货币市场继续在低迷中徘徊。主流现货交易量持续回落,投资者情绪谨慎,行业整体进入寒冬模式。然而在这样的市场环境下,Ju.com却交出了一份令人瞩目的成绩单:月活
- 成交量排行
- 币种热搜榜
OFFICIAL TRUMP
Pepe
泰达币
比特币
以太坊
Solana
USD Coin
瑞波币
币安币
First Digital USD
狗狗币
大零币
达世币
波场
莱特币
ZEN
OKB
ICP
FIL
LPT
AR
MINA
DYDX
EOS
BSV