Sui在设计底层技术时考虑到了密码学的灵活性。该系统支持多种密码算法和cryptographyprimitives,并可以在它们之间快速切换。开发人员不仅可以为系统选择同类最佳的best-of-breedcryptography,还可以实施最新的algorithms。Sui在一个统一的类型别名或整个存储库共享的枚举包装器下定义其cryptographyprimitives,例如公钥、签名、聚合签名和哈希函数。对这些原语进行更改会影响应用程序的所有组件。开发人员可以快速更新应用程序密码并确保统一的安全性。目前Sui通过执行交易端点支持以下用户交易签名方案:1.PureEd255192.Secp256k1ECDSA用户账户密钥对的接口实现
下面是Sui中密钥对表示的Demo。扩展到新的签名方案非常简单:1.把它添加到enum2.实现fastcrypto库中定义的KeyPairtrait
用户签名通过扩展一个额外的1字节标志来序列化,该标志标识关联的签名方案。尽管Sui团队考虑过使用Multiformats,但其可变标志长度的性质使得序列化存在问题。相反,Sui采用了单字节零起始标志模型。签名方案及其对应的标志定义如下:
当用户提交签名交易时,交易执行指定以下参数:BSC序列化transactionbytes为Base64Signatureschemeflag,可以传参为“ed25519”或“secp256k1”公钥的Base64格式其scheme对应的签名的Base64如下代码是执行已签名的交易,curl如果成功则返回证书和交易结果。
如下代码展示了Sui的全节点如何将API请求字段组装成序列化签名flag||signature||pubkey并在执行前进行验证检查。
Sui支持不同的签名方案的缘由剖析使用secp256k1椭圆曲线的ECDSA被比特币、以太坊和其他加密货币广泛采用。用户可能更喜欢这种签名方案,因为他们想利用现有的钱包和托管密钥管理工具,例如阈值签名和多签。此外,它与云基础设施和硬件安全模块具有更好的兼容性,同时支持从消息和签名负载中恢复公钥。同时,Ed25519是一种更现代的签名方案,具有确定性快速签名和简化数学的特点。虽然TypescriptSDK支持这两种签名方案。但是Sui还是选择Ed25519作为推荐的Sui钱包算法。因为Sui支持不同签名方案,在后面使用secp256r1曲线添加诸如ECDSA之类的方案将花费很少的精力,这条曲线目前是原生手机和未来密码学中都要支持的一条曲线,也是目前社区一个普遍要求的功能。对这种灵活的签名方案支持还使Sui系统与不安全的空签名方案进行基准测试。对于像Sui这样的快速执行系统,并行设计签名和验证也发生在事务级别,而不仅仅是区块层,加密灵活性让SuiCheck出加密操作给系统带来的开销。这些基准测试结果已经能够为Sui提供识别瓶颈和优化方向。授权密钥对
AuthorityonSui持有三个不同的密钥对:Protocolkeypair协议密钥对Accountkeypair帐户密钥对Networkkeypair网络密钥对Protocolkeypair协议密钥对如果用户签名的交易经过验证,协议密钥对会提供授权签名。当为用户交易提供签名的权力机构的占比超过所需的三分之二门槛时,Sui将执行交易。目前选择BLS12381方案来快速验证给定数量的授权机构的聚合签名。特别是决定使用minSigBLS模式,根据该模式,每个单独的公钥为96字节,而签名为48字节。后者很重要,因为通常验证者在每个纪元开始时注册一次他们的密钥,然后他们不断地签署交易;因此Sui优化了最小签名大小。注意!使用BLS方案,可以聚合独立签名,从而产生单个BLS签名有效负载。Sui还将聚合签名与bitmap一起表示签名的验证器。这有效地将当局的签名大小从(2f+1)×BLS_sig大小减少到只有一个BLS_sig有效负载,这反过来具有网络开销优势,可以独立于验证器集大小的压缩交易证书。密钥材料类型别名集中在整个存储库使用的单个位置。事实上,仅通过changingthealias(更改别名)就将协议密钥的Sui从Ed25519切换到了BLS12381。
为了解决BLS12381聚合签名的潜在恶意密钥攻击,在权限注册期间使用密钥知识证明(KOSK)。当授权机构请求添加到验证器集时,将提交并验证所有权证明。校验协议密钥kosk||protocolpublickey||suiaddress。与大多数标准不同,Sui的知识证明方案也提交到地址,这提供了额外的保护,防止来自另一个恶意验证器的验证器的BLS密钥被恶意重用。聚合签名在两种情况下很有用:当仲裁驱动程序从多个授权机构返回的SignedTransaction形成CertifiedTransaction时当权限形成SignedCheckpointSummary时,每个权限都会对检查点内容进行签名Accountkeypair帐户密钥对监管机构用来接收质押奖励付款的账户由账户密钥对保护,使用Ed25519作为签名方案。Networkkeypair网络密钥对私钥用于执行QUIC对Narwhalprimary及其worker网络接口所需的TLS握手。公钥用于验证节点ID,Ed25519用作签名方案。哈希和编码灵活性
目前,Sui的默认哈希函数是sha3256,正在运行基准测试以与sha256和blake2/blake3系列进行比较。为了支持编码灵活性,Base64和Hex在fastcrypto中定义了一个编码特性,作为一个包装器base64ct::Base64和hex及其定制的序列化和验证。值得注意的是,选择了base64ctcrate而不是最流行的base64Rustcrate,因为a)它是恒定时间b)明确拒绝损坏的编码以防止解码时的延展性攻击。Sui的研究团队成员最近报告了大多数base64解码器库中令人惊讶的延展性问题,获得了AsiaCCS2022最佳Poster奖,这是密码学和安全领域的重要会议之一。下面的代码片段显示了如何在fastcrypto中实现包装器结构:
加密灵活性顺应密码学趋势
凭借在密钥对、签名和哈希函数方面的加密的灵活性,Sui在库选择、基础签名方案、编码和哈希函数方面非常便捷。这不仅允许Sui在库有发现漏洞或某种方案有bug的情况下快速升级,还允许根据选择的cryptographyprimitives作为参数对整个系统进行基准测试。
被誉为WEB3行业最大的应用场景之一,最能带领WEB3出圈的Gamefi领域曾经被人们无限看好,但是2021年11月份Gamefi市场到达顶峰之后,便随着熊市一起遇冷.
我开足马力写了这篇长文,因为在过去的一周里,它在我的脑海中完全是沸腾状态,各种荒谬想法层出不穷.
熊市漫漫,热点分散。在缺乏明确投资机会的当下,本着“宁可错付gas,不能放过大毛”的原则,我将视线与精力投向了优质项目交互,说不定还能提前发现下一价值标的,是吧.
之前已经写过了关于以太坊网络即将进行的重大更新:上海升级,通过这次更新以太坊网络将完全过渡到权益证明共识机制。合并增加了以太坊的中心化,上海升级应该能解决这个问题.
Web3的第一轮创新主要集中在两点,一是用区块链通证来代表资产价值;二是将通证用于智能合约应用.
Twitter易主没几天,马斯克就禁止Twitter平台出现其他社交媒体的宣传账号的行为。在Twitter更新版的使用政策中提到,如官方发现帐户主要为推广Facebook、Instagram、M.