William DAO

币圈人如何做到非法币生存
前言现在很多在中国的币圈人,还在走OTC去出人民币;导致了冻卡以及生活不便。去香港的线下门店取纸币同样存在下面的问题: 你们会碰到这个问题,是因为你们太专注于炒币而完全不懂支付的最起码的知识;这同样也意味着你们不懂数字货币。我将在接下来的文章从理论高度到实际操作(就用你们的大陆身份就可以做到、无须第三国身份)给你们普及最起码的关于数字货币支付的幼稚园知识。 我在之前的文章中有提到全球虚拟银行运动以及VISA卡模型,现在我们回顾一下 https://mirror.xyz/williamdao.eth/EwFtrspWo30SfSItAIoCGNFlenY19d20AhmMmwiSGHs 全球数字银行分布,这个的意义是什么? 这意味着:你可以本人几乎不出现的情况下,开立红色区域国家的离案账户。通常情况下,离按账户需要护照(香港需要港澳通行证)。然后搭配VISA/Master卡,你就可以得到一个全球支付权(包括微信支付、支付宝均支持)2021年统计的全球虚拟银行分布接下来的章节,我会详细指导你如何用利用以上的资源做到,使用你的数字货币购买一个北京/上海/贵阳/成都街头的一个1.2元的包...

William DAO
去全球化时代如何继续接轨全球资本Web3.0时代的人才之道Created by freudegg. Eventually the Great Shanghai Lockdown will come to an end!一个新兴行业又叫一个赛道,一个赛道一定是由资本推动的;而不是由这个行业自己生产的产品或所谓的创新推动。如果不从资本溯源开始分析一个行业,我没看过成功的案例。上海的封城不仅仅只是一场闹剧,而是这个时代众多代表事件中的一个。这系列的事件的最终指向是全球化的结束。上海的解封、伴随高瓴资本的裁员(跑路)谣言。回望这个曾经熙熙攘攘的中国互联网圈;不管是腾讯、阿里、美团、滴滴、字节跳动等等,无一不是美元资本炒作的结果。试问,如果不是美元资本投资,而是人民币资本投资:所有这些企业的估值还会剩下百分之几?如果这样,以后的互联网企业会怎么走? 高瓴撤退说明中国互联网时代(web2.0)的终结,而Web3.0一定不会属于中国。这是每一个互联网从业人员都务必需要深刻认识到的一点。如果不能认识到这一点,等待你的极有可能的是类似2000年左右的国有企业大下岗。更有甚者,会导致你的所有的财产化...

币圈人如何做到非法币生存
前言现在很多在中国的币圈人,还在走OTC去出人民币;导致了冻卡以及生活不便。去香港的线下门店取纸币同样存在下面的问题: 你们会碰到这个问题,是因为你们太专注于炒币而完全不懂支付的最起码的知识;这同样也意味着你们不懂数字货币。我将在接下来的文章从理论高度到实际操作(就用你们的大陆身份就可以做到、无须第三国身份)给你们普及最起码的关于数字货币支付的幼稚园知识。 我在之前的文章中有提到全球虚拟银行运动以及VISA卡模型,现在我们回顾一下 https://mirror.xyz/williamdao.eth/EwFtrspWo30SfSItAIoCGNFlenY19d20AhmMmwiSGHs 全球数字银行分布,这个的意义是什么? 这意味着:你可以本人几乎不出现的情况下,开立红色区域国家的离案账户。通常情况下,离按账户需要护照(香港需要港澳通行证)。然后搭配VISA/Master卡,你就可以得到一个全球支付权(包括微信支付、支付宝均支持)2021年统计的全球虚拟银行分布接下来的章节,我会详细指导你如何用利用以上的资源做到,使用你的数字货币购买一个北京/上海/贵阳/成都街头的一个1.2元的包...

William DAO
去全球化时代如何继续接轨全球资本Web3.0时代的人才之道Created by freudegg. Eventually the Great Shanghai Lockdown will come to an end!一个新兴行业又叫一个赛道,一个赛道一定是由资本推动的;而不是由这个行业自己生产的产品或所谓的创新推动。如果不从资本溯源开始分析一个行业,我没看过成功的案例。上海的封城不仅仅只是一场闹剧,而是这个时代众多代表事件中的一个。这系列的事件的最终指向是全球化的结束。上海的解封、伴随高瓴资本的裁员(跑路)谣言。回望这个曾经熙熙攘攘的中国互联网圈;不管是腾讯、阿里、美团、滴滴、字节跳动等等,无一不是美元资本炒作的结果。试问,如果不是美元资本投资,而是人民币资本投资:所有这些企业的估值还会剩下百分之几?如果这样,以后的互联网企业会怎么走? 高瓴撤退说明中国互联网时代(web2.0)的终结,而Web3.0一定不会属于中国。这是每一个互联网从业人员都务必需要深刻认识到的一点。如果不能认识到这一点,等待你的极有可能的是类似2000年左右的国有企业大下岗。更有甚者,会导致你的所有的财产化...
William DAO

Subscribe to William DAO

Subscribe to William DAO
Share Dialog
Share Dialog


<100 subscribers
<100 subscribers
银行的现金管理流程即是典型的中心化资产管理,其中零售端收入的现金可以分为两部分:
流通环节的钱:纳入整体现金循环
存入金库的钱:存入金库或中央银行,封存、控制风险

而数字货币交易所的出入金管理,也是中心化的,几乎复刻了银行的现金流管理,如下:

其中:
红色的线表示流通环节的钱
蓝色的线表示纳入(财务)离线钱包的钱
交易所到出入金管理是从区块链技术的签名隔离开始,到简单审批系统人工上传签名文件;图中的Risk Server部分仅是为了出金的便捷性,并没有增加额外的安全反而暴露了风险。以上的流程就是交易所的出入金部门的主要IT系统以及运营人员的成本所在。同时,也是风险所在,所有“额外”的人工环节和系统均为可攻击的对象,均需要安全加固。
这一过程涉及到的一套复杂的IT系统并不会是资金托管的最终形式,本文接下来会谈到:通过数学方法建立的真正资产托管。
一旦交易被簽署,它就可以傳送到以太坊網路。創建,簽署和廣播交易的三個步驟通常發生在單個函數中,例如使用web3.eth.sendTransaction。但是,正如我們在原始交易創建和簽名中看到的那樣,你可以通過兩個單獨的步驟創建和簽署交易。一旦你簽署了交易記錄,你就可以使用web3.eth.sendSignedTransaction傳輸該交易記錄,該方法採用十六進制編碼的簽名交易資訊並在Ethereum網路上傳輸。

可以预先手机和准备好要出金批次,批量签名,然后一次性释放广播(很多交易所的需要人工审核的出金都是这样做的,例如FTX)一般规模的交易所并不会产生超过需要人工处理规模的出金笔数。此方法唯一的问题是:无法做到出金的实效性
https://www.investopedia.com/insights/what-is-a-pyramid-scheme/
旁氏骗局之成功的基础乃事资金归集,资金归集可以创建资金池,有了资金池就有了控制者抢劫的目标。很多时候你无法区分Pyramid Schemes 还是Multi-Level Marketing ,他们的区别仅仅在于是否有文中提到的资金池(Pool)。
How Pyramid Schemes Collapse
Pyramid schemes are viable as long as new, paying participants continue to buy in. The pyramid base must continue to grow. When the pool of available and willing participants disappears, the entire structure collapses.
存在合法的Multi-Level Marketing(直销类)企业,例如:安利、天津天狮集团等——保险销售代理人制度也是此类型。在社会和政治稳定的情况下,有合法的机构监督他们的账户和体系,则可以较为正常的发展;一旦监管松懈就会暴雷,屡见不鲜。本文将探讨祛除资金池的资金托管可能。

图中:
黄色的线段代表资金的流动
黄色的区域代表热钱包
蓝色的区域代表冷钱包
当用户的钱收入到事先生成好的收款地址后,依据时间和额度两个维度进行资金归集。归集以后的资金,一部分去向出金的热钱包,另外一部分纳入冷钱包进行资金存管。
以上,和银行的原理一致。银行的ATM取款机或柜面仅会保管一定额度的现金,而沉淀下来的托管资金会存入银行金库。因为现金的保管不便,银行会将用户的资金转换为贵重金属、国债等低风险的投资标的物。这是因为:
资金安全:因为保管不便,抢劫犯的存在
资金效率:沉淀下来的资金银行希望获得一定收益以覆盖银行运营成本
而数字资产交易所的冷热钱包分离的出发点和银行一致:
资金安全:线上交易所存在黑客盗取热钱包资金问题
资金效率:交易所希望拿出部分资金进行理财覆盖交易所日常支出
但是,交易所同时具备的托管证券交易的功能,使得其具有额外的收益渠道:手续费。因此,交易所可以做到超过100%的资金覆盖率,远高于传统商业银行0-8%的存款保证金率。以上中心化的交易所解决方案,同样会带来中心化的银行的问题:贪污问题、挪用客户资金问题需要监管的介入。最近FTX的暴雷事件就是最好的体现。
因为资金归集的存在,也使得审计难以进行。客户无法直观的得知自己的资产安全,所以求助于默克尔树证明以证明。比如说,在2022年12月Mazars拒绝出具币安的审计意见:
https://twitter.com/WhaleChart/status/1602089342645817347
一切问题的根源在于:资金归集
如果为每一个用户提供一个独立的保险箱,并施加极端的安全防护,则不会有上述所有问题。在现实世界中,给每一个用户提供一个独立的银行级保险箱的业务是存在的——私人银行
然而,私人银行的成本极高,并不是普通客户可以负担得起的。数字货币及其资金托管通过数学的方法则可以做到,本文讲重点探讨数字货币钱包的托管的各个方面。
典型的交易所钱包分类,出金的钱仅需要存入固定金额在Hot Wallet - 热钱包即可。入金-用户存入的钱又需要定期的“资金归集”收纳走。资金归集的钱可以放入一个更安全的离线钱包保存,防止被盗。
对于部署在非私有环境下的Risk Server,云服务的引入带来了额外的安全问题:如何防止云服务提供商不去偷窥签名服务器的密钥?密钥如何存储?—— AWS KMS
https://aws.amazon.com/tw/kms/
几乎所有的交易所均会采纳亚马逊的KMS系统存储和备份热钱包密钥,方法如下:
Here are the key steps for securing the private key:
Create a symmetric master key on AWS KMS (will use custom managed key).
Create IAM User to allow the wallet service calling AWS KMS service to decrypt using the master key and configure the IAM user credential in the wallet service.
Use the master key to encrypt a secret passphrase, and store the encrypted passphrase in the wallet services' configuration file.
Call AWS KMS to decrypt the secret passphrase during the wallet service start, and generate an AES key as the master key using PBKDF2 with HMAC SHA-256. As the passphrase is static, the AES key will always be the same. This AES key will serve as the master key and will only exist in the wallet service's memory.
Encrypt and decrypt the private keys using this master key via the AES-GCM algorithm.
For extended security:
AWS KMS comes with an audit feature, all encrypt/decrypt attempts will be logged and tracked. We could turn on AWS alert to monitor malicious access.
All keys on AWS KMS can be enabled/disabled at any time. But please note that we need to restart all wallet services after disabling a key because the master key will still be active because it was generated by the wallet.
Store the generated AES master key offline, in case AWS KMS service is not available or the customer-managed key is deleted.
https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
热钱包的钱所存在的链,如果支持智能合约,可以做成类似

多签存在如下问题:
并没有从根本上解决安全问题:钱包还在在线存储没有网络隔离
多签钱包的出金速度较慢
多签钱包的Gas费数倍于普通转账
因为智能合约的公开部署:引入了额外的安全风险
结论:多签钱包被广泛用于DAO等区中心化社区的金库管理,交易所并未采用。
大型交易所拥有数万个热钱包地址,如果采用多签钱包引入的数倍成本不是一笔小的开支。
https://twitter.com/binance/status/1601273556142551040
币安一次整理钱包就造成了ETH网络的Gas费用波动,并没有采用多签。
硬件钱包被用于交易的所有涉及人工的环节,通过分离硬件钱包的签名和广播,可以做到网络隔离,这一切的原理如下:Ledger 官方文档说明,Ledger参与一次事务。
https://developers.ledger.com/docs/coin/send/

https://www.ssi.gouv.fr/uploads/2019/02/anssi-cible-cspn-2019_03en.pdf
因为做了资金归集,不管是银行还是交易所的客户均不知道自己的钱最终是否真的安全的落入了金库或者“安全”的投资项目。所以中心化的项目不可避免的需要审计和监管。
传统金融业的审计这里不再赘述,本文会阐述没有审计机构参与的资金证明和默克尔树证明
请注意:资金证明就是链上钱包的所有权证明。默克尔证明是中心化交易所内部数据的用户账证明,可以认为默克尔证明是没有审计公司参与的审计报告。
资金证明即拿出交易所的热钱包+冷钱包的地址,做一个签名证明这个钱包的所有权。如果你完全信任交易所提供的地址是真的他們所有,可以參考一些實時的看板,如下:
https://portfolio.nansen.ai/dashboard/bybit
大额的冷钱包地址可以是短期“租借”的,即:我可以让某位富豪签上我交易所的信息
以下是OKX的资金证明文件:
https://static.okx.com/cdn/okx/por/okx_por_20221122.csv
OKX的签名仅是:I am an OKX address
只要此富豪可以长期保守秘密既可以假装是交易所钱包。
另外:证明仅支持有限的币种:BTC ETH USDT USDC ;其他的Token因为价值变化太大会造成交易所总资产变化过大,无法纳入证明文件。
只有提供了100%或者超额的准备金率默克尔树证明才有意义,因为:默克尔树证明是证明具体的某一个用户的代币是属于这个交易所的总余额的一部分。

默克尔树证明是一种不披露隐私的证明,其满足2个特征:
对每一个用户公布自己的资金的证明文件
但是不公布所有的用户的资金
这是因为默克尔树是一颗平衡二叉树,只需要并且满足最上面根节点的余额可以逐级拆分到最末一层到具体用户的叶子节点的余额信息。交易所仅需要披露沿这个叶子节点向上计算的一系列数组作为证明文件即可,如下:

因为审计行业需要一定时间的发展才可以真的培养出审计全新行业的人才,所以指望一个审计公司可以立刻发现数字货币行业的欺诈是困难的。
默克尔树证明仅证明具体的某一个用户的资金属于交易所的总资金。但是,如果之前的资金证明为假,则一切不可能。
实践中,几乎所有的交易所的默克尔树证明仅放入有限的币种:BTC ETH USDT USDC ;其他的Token因为价值变化太大,无法保全。
让我们先设想:如果没有交易所,用户自己保管自己的密钥

显而易见,图中存在几个问题:
大脑的遗忘
不管密钥是抄写在纸上,还是刻在钢板上,均有遗失的风险。
以上本质上还是需要大脑记住纸在哪里?笔记本在哪里?
比特币已经十多年历史了,有谁还知道自己小时候的日记本在哪里?
钱包分享的需求
社会学上,共享或者分摊一个资金池的需求是存在的
如果要分享钱包就涉及分享密钥
在去中心化的条件下没有仲裁机构没有法律,所以:分享即代表放弃

多签即采用智能合约的形式,多把钥匙管理一个钱包。因为此,事实上存在一个合约钱包,即图中的两把钥匙的交叉线部分。上一节涉及的2个问题得到了解决
遗忘
可以有3把钥匙,仅需其中2把钥匙既可以开锁,这样的设计可以在丢失一把钥匙的情况而不丢失资产
分享
同上,共同管理资产的多种形式得到了保全
但是这也引入了额外的风险和问题
多签钱包本身也是一个公开的智能合约(图中多了一个链上地址)造成了额外的风险暴露
多步操作不管是gas费还是速度均劣于单个钱包地址
MPC对比Mulit-Sig(多签)是一个线下的解决方案。
https://app.ardrive.io/#/file/6f4c969d-5cc2-4915-8f22-446910dc1562/view
在线下解决区块链的共识给了各大私有解决方案极大的发挥空间,虽然最早的多签思想来自1987年的密码学峰会论文集(Page 120),但相当多的MPC签名算法是2018-2022年间刚刚被发现的。这就意味着:相当多的MPC算法均闭源且仅掌握在极少数厂商。本文引用了一个2022年刚刚发表的论文的可实践和开源方案。而具体的MPC解决方案需要实际参与具体厂商的合作才能一窥究竟(仅公开源代码给合作伙伴)

MPC 就是 Multi-Party Computitation,从字面意思可以推论核心点在于:Secret Sharing - 密钥分享。 一个直观的方式即是拆分密钥(Secret)为N份,最后通过N个人拼接起完整的密钥。然而,该直观的方法存在一个明显的缺陷:如有N份中丢了一份怎么办?这会直接导致资产全部损失。
如果可以和多签一样做到门限(Threshold)签名就好了。这样,如果有N份签名,提供N-1份既可以算出完整密钥,则可以容下其中一份密钥切片丢失的损失。及时作出一份重新MPC即可。
如下所示:
https://www.youtube.com/watch?t=213&v=4DFfZovCBB0&feature=emb_imp_woyt&themeRefresh=1
密钥分享先从著名的Diffie–Hellman Key Exchange算法开始: 如何在不安全的通讯渠道安全的分享A、B 两个实体店密钥?

如图所示: a和b是不可以暴露在外网的密钥,我们需要通过可以暴露在外网的g和n,让Satoshi和Vitalik互相知道对方的密钥。

此章节和MPC并无必然联系,但是可以作为一个启发点:即使我们做到了完美的Sharing Key的签名,在最开始的时候我们是如何在多方建立起密钥初始化的(多方是如何通过网络协调一致产生了 多方密钥分片)?
如何制造一份仅需N份密钥既可以恢复全部的办法?这同样可以转化成为一个类Key Exchange问题,只是需用的数学原理不一样。这里我们用到的是多项式方法,如下


我们选择方程式需要满足一个原则:方程的次数需要等于N-1。如果我们定义 a和b 为任意变量,那么秘密就是c。为了得到c,我们仅需要三组坐标即可(这里的3即是门限)
计算过程如下
(x,y)(1, 6), (x,y)(2,13), (x,y)(-2, 9)
(1) (1,6) => c = a + b - 6
(2) (2,13) => c = 4a + 2b - 13
(3) (-2,9) => c = 4a - 2b - 9
可以知算得:a=2* and b=1 into (1) => c=3(密钥!)*
现代MPC的几个核心概念:
我们要的是一个可以做签名的密钥的多个实体的分享
这个分享不是简单的代数1/N切片 而是涉及到数学的 class-groups-based thredshold
要完成一个MPC涉及3个安全的步骤:密钥多方生成、离线签名、在线广播
https://github.com/LatticeX-Foundation/opentss
论文摘要部分
The currently known class-group-based threshold ECDSA constructions
MPC首先是生成基于群论的常用加密算法(例如:ECDSA)的门限密钥,这就意味着其并不是一种全新的无法被硬件加速和执行的算法。

东罗马帝国的科穆宁王朝已经实现了全罗马军队的“托管”,也是因为东罗马帝国创造性的发现了“拜占庭将军问题”并与解决了雇佣军的叛乱问题,完成了指挥中枢的去中心化。
https://en.wikipedia.org/wiki/Byzantine_army_(Komnenian_era)
拜占庭的皇帝们在若干代以后已经丧失了军队的自主权不得不求助于佣兵体系,仅依赖拜占庭的财富即可让东罗马帝国续命一百多年。这个故事应当启发资本的传承,丧失了父辈创业的运气或能力的二代三代们如何尽可能的利用好父辈的遗产而避免被Rug Pull(我们需要考虑最恶劣的情况)?
在没有资金归集透明的托管平台之下,通过简单的KYC(可以线下)既可以完成对于资产平台的监督。从而使得类拜占庭佣兵体制可以继续。
从技术的角度出发,在完成了离线的MPC门限签名以后,我们也完全可以实现真正意义上的资金托管系统,如下所示:

建立完成门限签名的数学直观以后,我们不难得出一个更优的架构,如上图所示:
2台在线存储密钥的加密机
1台离线存储密钥的加密机或设备
在门限等于二的情况下,任意一台故障均不会代表资产损失。以上3台也可以均在线,可以实施分布式系统的拜占庭容错,如下:
因为去中心化不依赖法律和政治制度,如果密钥服务被攻破就意味着资产损失,安全加固的重要性质再为强调也不过分。中心化的服务,因为冷热资产分离的设计,他们的安全防护是天然存在弱点的。
采用亚马逊的KMS服务仅仅会加密可持久化数据,并不会加密易失数据(例如:内存中的数据),也不会加密CPU的DataPath和Control的代码逻辑。如果平台本身(这里指AWS人员)有人作恶,是可以轻易看到计算过程以及数据的。所以,采用亚马逊KMS 技术,被认为是存在缺陷的,如果要将托管平台实施在亚马逊KMS平台,一般的托管机构均要求签署免责协议。而亚马逊云频繁发生的故障,也让人对其可用性担心。
作为对于亚马逊KMS服务的针对性加强,主流的托管商均会选择Intel SGX 作为隔离存储的硬件设备。

https://eprint.iacr.org/2016/086.pdf
因为其在CPU级别做了隔离和加密

与之配套的源代码SDK
#include <stdio.h>
#include <tchar.h>
#include "sgx_urts.h"
#include "sample_enclave_u.h"
#define ENCLAVE_FILE _T("sample_enclave.signed.dll")
#define MAX_BUF_LEN 100
int main()
{
sgx_enclave_id_t eid;
sgx_status_t ret = SGX_SUCCESS;
sgx_launch_token_t token = {0};
int updated = 0;
char buffer[MAX_BUF_LEN] = "Hello World!";
// Create the Enclave with above launch token.
ret = sgx_create_enclave(ENCLAVE_FILE, SGX_DEBUG_FLAG, &token, &updated,
&eid, NULL);
if (ret != SGX_SUCCESS)
{
printf("App: error %#x, failed to create enclave.\n", ret);
return -1;
}
// A bunch of Enclave calls (ECALL) will happen here.
foo(eid, buffer, MAX_BUF_LEN);
printf("%s", buffer);
// Destroy the enclave when all Enclave calls finished.
if(SGX_SUCCESS != sgx_destroy_enclave(eid))
return -1;
return 0;
}
目前,Azure云和IBM云均提供了SGX技术
作为一个消费级的加密技术,SGX已经被数次攻陷。比如说:传统的内存攻击方法 Rowhammer
报告案例:
https://sgx101.gitbook.io/sgx101/sgx-security/row-hammer-attack
参考:《硬件安全模块能否战胜传统冷储存方式》
<https://www.redbooks.ibm.com/redbooks/pdfs/sg248446.pdf >
IBM大型机的冗余设计以及抗量子硬件加密。
而这一套冗余的设计是optional: true(byzantine) fault tolerance
To maximize the benefits of a CICSplex, installations can assign different roles to different regions. In an example configuration, some regions, often called terminal-owning regions (TORs), act as communication front-ends. They receive inbound work for the CICSplex and pass the work to regions often called application-owning regions (AORs) that run the application programs that implement the business functions. In some configurations, AORs delegate access to underlying corporate data through dedicated regions, often called data-owning regions (DORs) or file-owning regions (FORs).

https://www.ibm.com/downloads/cas/G5NNXDOA
https://www.ibm.com/docs/en/zos-connect/zosconnect/3.0?topic=connect-hardware-cryptography
全体整数的加法构成一个群:
最常见的群之一是整数集,它由以下数组成:
..., −4, −3, −2, −1, 0, 1, 2, 3, 4,...
下列整数加法的性质,可以作为抽象的群公理的模型。
对于任何两个整数a和b,它们的和a+b也是整数。换句话说,在任何时候,把两个整数相加都能得出整数的结果。这个性质叫做在加法下封闭。
对于任何整数a,b和c,(a+b) +c=a+(b+c)。用话语来表达,先把a加到b,然后把它们的和加到c,所得到的结果与把a加到b与c的和是相等的。这个性质叫做结合律。
如果a是任何整数,那么0 +a=a+ 0 =a。零叫做加法的单位元,因为把它加到任何整数都得到相同的整数。
对于任何整数a,存在另一个整数b使得a+b=b+a= 0。整数
全体非零实数的乘法构成一个群
对三个互不相同的有序对象的6种不同顺序间的改变(包括不变的情况)构成一个六阶的群(这是一个有限的置换群的例子),它由此被标记为S3
银行的现金管理流程即是典型的中心化资产管理,其中零售端收入的现金可以分为两部分:
流通环节的钱:纳入整体现金循环
存入金库的钱:存入金库或中央银行,封存、控制风险

而数字货币交易所的出入金管理,也是中心化的,几乎复刻了银行的现金流管理,如下:

其中:
红色的线表示流通环节的钱
蓝色的线表示纳入(财务)离线钱包的钱
交易所到出入金管理是从区块链技术的签名隔离开始,到简单审批系统人工上传签名文件;图中的Risk Server部分仅是为了出金的便捷性,并没有增加额外的安全反而暴露了风险。以上的流程就是交易所的出入金部门的主要IT系统以及运营人员的成本所在。同时,也是风险所在,所有“额外”的人工环节和系统均为可攻击的对象,均需要安全加固。
这一过程涉及到的一套复杂的IT系统并不会是资金托管的最终形式,本文接下来会谈到:通过数学方法建立的真正资产托管。
一旦交易被簽署,它就可以傳送到以太坊網路。創建,簽署和廣播交易的三個步驟通常發生在單個函數中,例如使用web3.eth.sendTransaction。但是,正如我們在原始交易創建和簽名中看到的那樣,你可以通過兩個單獨的步驟創建和簽署交易。一旦你簽署了交易記錄,你就可以使用web3.eth.sendSignedTransaction傳輸該交易記錄,該方法採用十六進制編碼的簽名交易資訊並在Ethereum網路上傳輸。

可以预先手机和准备好要出金批次,批量签名,然后一次性释放广播(很多交易所的需要人工审核的出金都是这样做的,例如FTX)一般规模的交易所并不会产生超过需要人工处理规模的出金笔数。此方法唯一的问题是:无法做到出金的实效性
https://www.investopedia.com/insights/what-is-a-pyramid-scheme/
旁氏骗局之成功的基础乃事资金归集,资金归集可以创建资金池,有了资金池就有了控制者抢劫的目标。很多时候你无法区分Pyramid Schemes 还是Multi-Level Marketing ,他们的区别仅仅在于是否有文中提到的资金池(Pool)。
How Pyramid Schemes Collapse
Pyramid schemes are viable as long as new, paying participants continue to buy in. The pyramid base must continue to grow. When the pool of available and willing participants disappears, the entire structure collapses.
存在合法的Multi-Level Marketing(直销类)企业,例如:安利、天津天狮集团等——保险销售代理人制度也是此类型。在社会和政治稳定的情况下,有合法的机构监督他们的账户和体系,则可以较为正常的发展;一旦监管松懈就会暴雷,屡见不鲜。本文将探讨祛除资金池的资金托管可能。

图中:
黄色的线段代表资金的流动
黄色的区域代表热钱包
蓝色的区域代表冷钱包
当用户的钱收入到事先生成好的收款地址后,依据时间和额度两个维度进行资金归集。归集以后的资金,一部分去向出金的热钱包,另外一部分纳入冷钱包进行资金存管。
以上,和银行的原理一致。银行的ATM取款机或柜面仅会保管一定额度的现金,而沉淀下来的托管资金会存入银行金库。因为现金的保管不便,银行会将用户的资金转换为贵重金属、国债等低风险的投资标的物。这是因为:
资金安全:因为保管不便,抢劫犯的存在
资金效率:沉淀下来的资金银行希望获得一定收益以覆盖银行运营成本
而数字资产交易所的冷热钱包分离的出发点和银行一致:
资金安全:线上交易所存在黑客盗取热钱包资金问题
资金效率:交易所希望拿出部分资金进行理财覆盖交易所日常支出
但是,交易所同时具备的托管证券交易的功能,使得其具有额外的收益渠道:手续费。因此,交易所可以做到超过100%的资金覆盖率,远高于传统商业银行0-8%的存款保证金率。以上中心化的交易所解决方案,同样会带来中心化的银行的问题:贪污问题、挪用客户资金问题需要监管的介入。最近FTX的暴雷事件就是最好的体现。
因为资金归集的存在,也使得审计难以进行。客户无法直观的得知自己的资产安全,所以求助于默克尔树证明以证明。比如说,在2022年12月Mazars拒绝出具币安的审计意见:
https://twitter.com/WhaleChart/status/1602089342645817347
一切问题的根源在于:资金归集
如果为每一个用户提供一个独立的保险箱,并施加极端的安全防护,则不会有上述所有问题。在现实世界中,给每一个用户提供一个独立的银行级保险箱的业务是存在的——私人银行
然而,私人银行的成本极高,并不是普通客户可以负担得起的。数字货币及其资金托管通过数学的方法则可以做到,本文讲重点探讨数字货币钱包的托管的各个方面。
典型的交易所钱包分类,出金的钱仅需要存入固定金额在Hot Wallet - 热钱包即可。入金-用户存入的钱又需要定期的“资金归集”收纳走。资金归集的钱可以放入一个更安全的离线钱包保存,防止被盗。
对于部署在非私有环境下的Risk Server,云服务的引入带来了额外的安全问题:如何防止云服务提供商不去偷窥签名服务器的密钥?密钥如何存储?—— AWS KMS
https://aws.amazon.com/tw/kms/
几乎所有的交易所均会采纳亚马逊的KMS系统存储和备份热钱包密钥,方法如下:
Here are the key steps for securing the private key:
Create a symmetric master key on AWS KMS (will use custom managed key).
Create IAM User to allow the wallet service calling AWS KMS service to decrypt using the master key and configure the IAM user credential in the wallet service.
Use the master key to encrypt a secret passphrase, and store the encrypted passphrase in the wallet services' configuration file.
Call AWS KMS to decrypt the secret passphrase during the wallet service start, and generate an AES key as the master key using PBKDF2 with HMAC SHA-256. As the passphrase is static, the AES key will always be the same. This AES key will serve as the master key and will only exist in the wallet service's memory.
Encrypt and decrypt the private keys using this master key via the AES-GCM algorithm.
For extended security:
AWS KMS comes with an audit feature, all encrypt/decrypt attempts will be logged and tracked. We could turn on AWS alert to monitor malicious access.
All keys on AWS KMS can be enabled/disabled at any time. But please note that we need to restart all wallet services after disabling a key because the master key will still be active because it was generated by the wallet.
Store the generated AES master key offline, in case AWS KMS service is not available or the customer-managed key is deleted.
https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
热钱包的钱所存在的链,如果支持智能合约,可以做成类似

多签存在如下问题:
并没有从根本上解决安全问题:钱包还在在线存储没有网络隔离
多签钱包的出金速度较慢
多签钱包的Gas费数倍于普通转账
因为智能合约的公开部署:引入了额外的安全风险
结论:多签钱包被广泛用于DAO等区中心化社区的金库管理,交易所并未采用。
大型交易所拥有数万个热钱包地址,如果采用多签钱包引入的数倍成本不是一笔小的开支。
https://twitter.com/binance/status/1601273556142551040
币安一次整理钱包就造成了ETH网络的Gas费用波动,并没有采用多签。
硬件钱包被用于交易的所有涉及人工的环节,通过分离硬件钱包的签名和广播,可以做到网络隔离,这一切的原理如下:Ledger 官方文档说明,Ledger参与一次事务。
https://developers.ledger.com/docs/coin/send/

https://www.ssi.gouv.fr/uploads/2019/02/anssi-cible-cspn-2019_03en.pdf
因为做了资金归集,不管是银行还是交易所的客户均不知道自己的钱最终是否真的安全的落入了金库或者“安全”的投资项目。所以中心化的项目不可避免的需要审计和监管。
传统金融业的审计这里不再赘述,本文会阐述没有审计机构参与的资金证明和默克尔树证明
请注意:资金证明就是链上钱包的所有权证明。默克尔证明是中心化交易所内部数据的用户账证明,可以认为默克尔证明是没有审计公司参与的审计报告。
资金证明即拿出交易所的热钱包+冷钱包的地址,做一个签名证明这个钱包的所有权。如果你完全信任交易所提供的地址是真的他們所有,可以參考一些實時的看板,如下:
https://portfolio.nansen.ai/dashboard/bybit
大额的冷钱包地址可以是短期“租借”的,即:我可以让某位富豪签上我交易所的信息
以下是OKX的资金证明文件:
https://static.okx.com/cdn/okx/por/okx_por_20221122.csv
OKX的签名仅是:I am an OKX address
只要此富豪可以长期保守秘密既可以假装是交易所钱包。
另外:证明仅支持有限的币种:BTC ETH USDT USDC ;其他的Token因为价值变化太大会造成交易所总资产变化过大,无法纳入证明文件。
只有提供了100%或者超额的准备金率默克尔树证明才有意义,因为:默克尔树证明是证明具体的某一个用户的代币是属于这个交易所的总余额的一部分。

默克尔树证明是一种不披露隐私的证明,其满足2个特征:
对每一个用户公布自己的资金的证明文件
但是不公布所有的用户的资金
这是因为默克尔树是一颗平衡二叉树,只需要并且满足最上面根节点的余额可以逐级拆分到最末一层到具体用户的叶子节点的余额信息。交易所仅需要披露沿这个叶子节点向上计算的一系列数组作为证明文件即可,如下:

因为审计行业需要一定时间的发展才可以真的培养出审计全新行业的人才,所以指望一个审计公司可以立刻发现数字货币行业的欺诈是困难的。
默克尔树证明仅证明具体的某一个用户的资金属于交易所的总资金。但是,如果之前的资金证明为假,则一切不可能。
实践中,几乎所有的交易所的默克尔树证明仅放入有限的币种:BTC ETH USDT USDC ;其他的Token因为价值变化太大,无法保全。
让我们先设想:如果没有交易所,用户自己保管自己的密钥

显而易见,图中存在几个问题:
大脑的遗忘
不管密钥是抄写在纸上,还是刻在钢板上,均有遗失的风险。
以上本质上还是需要大脑记住纸在哪里?笔记本在哪里?
比特币已经十多年历史了,有谁还知道自己小时候的日记本在哪里?
钱包分享的需求
社会学上,共享或者分摊一个资金池的需求是存在的
如果要分享钱包就涉及分享密钥
在去中心化的条件下没有仲裁机构没有法律,所以:分享即代表放弃

多签即采用智能合约的形式,多把钥匙管理一个钱包。因为此,事实上存在一个合约钱包,即图中的两把钥匙的交叉线部分。上一节涉及的2个问题得到了解决
遗忘
可以有3把钥匙,仅需其中2把钥匙既可以开锁,这样的设计可以在丢失一把钥匙的情况而不丢失资产
分享
同上,共同管理资产的多种形式得到了保全
但是这也引入了额外的风险和问题
多签钱包本身也是一个公开的智能合约(图中多了一个链上地址)造成了额外的风险暴露
多步操作不管是gas费还是速度均劣于单个钱包地址
MPC对比Mulit-Sig(多签)是一个线下的解决方案。
https://app.ardrive.io/#/file/6f4c969d-5cc2-4915-8f22-446910dc1562/view
在线下解决区块链的共识给了各大私有解决方案极大的发挥空间,虽然最早的多签思想来自1987年的密码学峰会论文集(Page 120),但相当多的MPC签名算法是2018-2022年间刚刚被发现的。这就意味着:相当多的MPC算法均闭源且仅掌握在极少数厂商。本文引用了一个2022年刚刚发表的论文的可实践和开源方案。而具体的MPC解决方案需要实际参与具体厂商的合作才能一窥究竟(仅公开源代码给合作伙伴)

MPC 就是 Multi-Party Computitation,从字面意思可以推论核心点在于:Secret Sharing - 密钥分享。 一个直观的方式即是拆分密钥(Secret)为N份,最后通过N个人拼接起完整的密钥。然而,该直观的方法存在一个明显的缺陷:如有N份中丢了一份怎么办?这会直接导致资产全部损失。
如果可以和多签一样做到门限(Threshold)签名就好了。这样,如果有N份签名,提供N-1份既可以算出完整密钥,则可以容下其中一份密钥切片丢失的损失。及时作出一份重新MPC即可。
如下所示:
https://www.youtube.com/watch?t=213&v=4DFfZovCBB0&feature=emb_imp_woyt&themeRefresh=1
密钥分享先从著名的Diffie–Hellman Key Exchange算法开始: 如何在不安全的通讯渠道安全的分享A、B 两个实体店密钥?

如图所示: a和b是不可以暴露在外网的密钥,我们需要通过可以暴露在外网的g和n,让Satoshi和Vitalik互相知道对方的密钥。

此章节和MPC并无必然联系,但是可以作为一个启发点:即使我们做到了完美的Sharing Key的签名,在最开始的时候我们是如何在多方建立起密钥初始化的(多方是如何通过网络协调一致产生了 多方密钥分片)?
如何制造一份仅需N份密钥既可以恢复全部的办法?这同样可以转化成为一个类Key Exchange问题,只是需用的数学原理不一样。这里我们用到的是多项式方法,如下


我们选择方程式需要满足一个原则:方程的次数需要等于N-1。如果我们定义 a和b 为任意变量,那么秘密就是c。为了得到c,我们仅需要三组坐标即可(这里的3即是门限)
计算过程如下
(x,y)(1, 6), (x,y)(2,13), (x,y)(-2, 9)
(1) (1,6) => c = a + b - 6
(2) (2,13) => c = 4a + 2b - 13
(3) (-2,9) => c = 4a - 2b - 9
可以知算得:a=2* and b=1 into (1) => c=3(密钥!)*
现代MPC的几个核心概念:
我们要的是一个可以做签名的密钥的多个实体的分享
这个分享不是简单的代数1/N切片 而是涉及到数学的 class-groups-based thredshold
要完成一个MPC涉及3个安全的步骤:密钥多方生成、离线签名、在线广播
https://github.com/LatticeX-Foundation/opentss
论文摘要部分
The currently known class-group-based threshold ECDSA constructions
MPC首先是生成基于群论的常用加密算法(例如:ECDSA)的门限密钥,这就意味着其并不是一种全新的无法被硬件加速和执行的算法。

东罗马帝国的科穆宁王朝已经实现了全罗马军队的“托管”,也是因为东罗马帝国创造性的发现了“拜占庭将军问题”并与解决了雇佣军的叛乱问题,完成了指挥中枢的去中心化。
https://en.wikipedia.org/wiki/Byzantine_army_(Komnenian_era)
拜占庭的皇帝们在若干代以后已经丧失了军队的自主权不得不求助于佣兵体系,仅依赖拜占庭的财富即可让东罗马帝国续命一百多年。这个故事应当启发资本的传承,丧失了父辈创业的运气或能力的二代三代们如何尽可能的利用好父辈的遗产而避免被Rug Pull(我们需要考虑最恶劣的情况)?
在没有资金归集透明的托管平台之下,通过简单的KYC(可以线下)既可以完成对于资产平台的监督。从而使得类拜占庭佣兵体制可以继续。
从技术的角度出发,在完成了离线的MPC门限签名以后,我们也完全可以实现真正意义上的资金托管系统,如下所示:

建立完成门限签名的数学直观以后,我们不难得出一个更优的架构,如上图所示:
2台在线存储密钥的加密机
1台离线存储密钥的加密机或设备
在门限等于二的情况下,任意一台故障均不会代表资产损失。以上3台也可以均在线,可以实施分布式系统的拜占庭容错,如下:
因为去中心化不依赖法律和政治制度,如果密钥服务被攻破就意味着资产损失,安全加固的重要性质再为强调也不过分。中心化的服务,因为冷热资产分离的设计,他们的安全防护是天然存在弱点的。
采用亚马逊的KMS服务仅仅会加密可持久化数据,并不会加密易失数据(例如:内存中的数据),也不会加密CPU的DataPath和Control的代码逻辑。如果平台本身(这里指AWS人员)有人作恶,是可以轻易看到计算过程以及数据的。所以,采用亚马逊KMS 技术,被认为是存在缺陷的,如果要将托管平台实施在亚马逊KMS平台,一般的托管机构均要求签署免责协议。而亚马逊云频繁发生的故障,也让人对其可用性担心。
作为对于亚马逊KMS服务的针对性加强,主流的托管商均会选择Intel SGX 作为隔离存储的硬件设备。

https://eprint.iacr.org/2016/086.pdf
因为其在CPU级别做了隔离和加密

与之配套的源代码SDK
#include <stdio.h>
#include <tchar.h>
#include "sgx_urts.h"
#include "sample_enclave_u.h"
#define ENCLAVE_FILE _T("sample_enclave.signed.dll")
#define MAX_BUF_LEN 100
int main()
{
sgx_enclave_id_t eid;
sgx_status_t ret = SGX_SUCCESS;
sgx_launch_token_t token = {0};
int updated = 0;
char buffer[MAX_BUF_LEN] = "Hello World!";
// Create the Enclave with above launch token.
ret = sgx_create_enclave(ENCLAVE_FILE, SGX_DEBUG_FLAG, &token, &updated,
&eid, NULL);
if (ret != SGX_SUCCESS)
{
printf("App: error %#x, failed to create enclave.\n", ret);
return -1;
}
// A bunch of Enclave calls (ECALL) will happen here.
foo(eid, buffer, MAX_BUF_LEN);
printf("%s", buffer);
// Destroy the enclave when all Enclave calls finished.
if(SGX_SUCCESS != sgx_destroy_enclave(eid))
return -1;
return 0;
}
目前,Azure云和IBM云均提供了SGX技术
作为一个消费级的加密技术,SGX已经被数次攻陷。比如说:传统的内存攻击方法 Rowhammer
报告案例:
https://sgx101.gitbook.io/sgx101/sgx-security/row-hammer-attack
参考:《硬件安全模块能否战胜传统冷储存方式》
<https://www.redbooks.ibm.com/redbooks/pdfs/sg248446.pdf >
IBM大型机的冗余设计以及抗量子硬件加密。
而这一套冗余的设计是optional: true(byzantine) fault tolerance
To maximize the benefits of a CICSplex, installations can assign different roles to different regions. In an example configuration, some regions, often called terminal-owning regions (TORs), act as communication front-ends. They receive inbound work for the CICSplex and pass the work to regions often called application-owning regions (AORs) that run the application programs that implement the business functions. In some configurations, AORs delegate access to underlying corporate data through dedicated regions, often called data-owning regions (DORs) or file-owning regions (FORs).

https://www.ibm.com/downloads/cas/G5NNXDOA
https://www.ibm.com/docs/en/zos-connect/zosconnect/3.0?topic=connect-hardware-cryptography
全体整数的加法构成一个群:
最常见的群之一是整数集,它由以下数组成:
..., −4, −3, −2, −1, 0, 1, 2, 3, 4,...
下列整数加法的性质,可以作为抽象的群公理的模型。
对于任何两个整数a和b,它们的和a+b也是整数。换句话说,在任何时候,把两个整数相加都能得出整数的结果。这个性质叫做在加法下封闭。
对于任何整数a,b和c,(a+b) +c=a+(b+c)。用话语来表达,先把a加到b,然后把它们的和加到c,所得到的结果与把a加到b与c的和是相等的。这个性质叫做结合律。
如果a是任何整数,那么0 +a=a+ 0 =a。零叫做加法的单位元,因为把它加到任何整数都得到相同的整数。
对于任何整数a,存在另一个整数b使得a+b=b+a= 0。整数
全体非零实数的乘法构成一个群
对三个互不相同的有序对象的6种不同顺序间的改变(包括不变的情况)构成一个六阶的群(这是一个有限的置换群的例子),它由此被标记为S3
No activity yet