技术分享|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.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
您可能感兴趣
-
Arkstream Capital:2025 当加密资产重归“金融逻辑”作者:Arkstream Capital2025 年加密市场的主线不再围绕单一公链的技术周期或链上叙事的自循环展开,而是进入“外部变量定价与金融入口竞争”主导的深度化阶段。政策与合规框架决定长期资本的
-
加密资产跌出主流牌桌?2025 资金大迁徙真相原文作者:Nancy,PANews昨晚(12 月 29 日),比特币再次走出“画门”行情。面对这种反复拉扯的胶着走势,市场的神经似乎早已麻木。 从比特币高点回落至今,满打满算不过三个月,但投资者却仿佛
-
2025 美股年鉴:高墙新耸,围栏坍塌,2026 如何寻找新秩序的锚点?撰文:Frank,麦通 MSX 研究院凡是过去,皆为序章。 在 2025 年收官之际,回望过去 12 个月的美股与全球金融市场,我们很难用「上涨」或「回调」这样线性的词汇来概括这一年,相反它更像是一连
-
BitMart Pay 深度解读加密支付落地路径,AMA 聚焦越南 QR 支付场景,参与用户可获 10,000 越南盾话2025年12月30日 – 全球领先的数字资产交易平台 BitMart 今日宣布,旗下数字支付解决方案 BitMart Pay 已正式登陆越南市场。这一进展标志着 BitMart 在东南亚数字支付领域
-
股票上链后的加密生态如何发展?- 股票上链后,MEME受的影响会是最大吧?加密项目估值会与传统上市公司对标吧? MEME是不是会受的影响最大不好说,但估计会受一些影响。不过赌场总不会缺生意、也总不会缺人关注。 加密项目估值会与传统
-
VC vs 社区:真正的超额收益究竟在哪?作者: Green But Red 编译: Ken,ChainCatcher加密货币领域主要由两种类型的代币构成:那些获得数亿美元风险投资支持的公司以及那些由用户支持的项目两者都具有上涨潜力。 只有一
-
RootData 发布代币解锁赏金复盘:攻坚透明度基建“最难啃的骨头”来源:RootData 官方博客近期,币安将透明度提上调研议程,这一信号再次印证了我们长久以来的观察:行业正从一个讨论透明“为什么重要”的时代,迈入必须解决透明“如何可实现”的基建阶段。 而我们想分享
-
靠钱包追踪,在 18 岁时用 50 美元赚到百万身家
我靠的不是某一笔交易的运气爆棚,而是重复捕捉可复制的市场规律。撰文:Ugo编译:Luffy,Foresight News2024 年 2 月,我带着 80 美元踏入 Meme 币交易世界,结果亏得一干
- 成交量排行
- 币种热搜榜
OFFICIAL TRUMP
World Liberty Financial USDv
泰达币
比特币
以太坊
USD Coin
First Digital USD
Solana
瑞波币
大零币
Wormhole
币安币
狗狗币
莱特币
比特现金
FLOW
FIL
UNI
ZEN
AR
OKB
SHIB
LUNC
DYDX