热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

BSV上的付费解密智能合约

Alice有一条加密消息,即密文。Bob有原始消息,明文。Alice想付费给BobBSV以换取明文。如果Alice先付钱给Bob,Bob可


Alice 有一条加密消息,即密文。Bob 有原始消息,明文。Alice 想付费给 Bob BSV 以换取明文。如果 Alice 先付钱给 Bob,Bob 可能不会给她明文。相反,如果 Bob 先把明文告诉 Alice,Alice 可能会拒绝付费。

我们设计了一个称为支付解密的智能合约,使交易原子化且无需信任,确保只有正确的明文才能赎回锁定的资金¹。

Diffie–Hellman 密钥交换

Diffie–Hellman 密钥交换 (DHKE) 是一种密钥协商协议,允许两方通过不安全的通道建立共享秘密。

下图显示了椭圆曲线上的 DHKE。一开始,Alice 和 Bob 各有一对公私钥。交换后,他们生成一个共享密钥。

在这里插入图片描述


椭圆曲线 Diffie Hellman

ElGamal 加密

ElGamal 加密是一种基于 Diffie–Hellman 密钥交换的非对称密钥加密算法,以 Taher Elgamal² 命名。Alice 用他的公钥加密给 Bob 的消息,只能用 Bob 的私钥解密。

下图显示了它如何在椭圆曲线上工作,例如 BSV 中的 secp256k1。与在标准 DHKE 中一样,建立了以下共享秘密。

S = k * A = a * K = k * a * P

a 是 Alice 的密钥,k 可以看作是 Bob 的。

为了加密消息 M,Bob 只需将其添加到 S:

C = S + M

Bob 将密文,即 (K, C) 对发送给 Alice。

要解密,Alice 可以简单地减去以恢复 M:

M = C - S

注意 Alice 从 K 知道 S:

S = a * K

在这里插入图片描述

付费解密

Alice 在给定 KC 的情况下将资金锁定在以下合约中。Bob 只有提供正确的明文和解密密钥才能赎回它。我们使用之前的椭圆曲线库进行点运算。

contract Pay2Decrypt {
// ciphertext: (K, C)
Point K;
Point C;
public function decrypt(PrivKey privKey, Point plaintext) {
Point sharedSecret = EC.multByScalar(this.K, privKey);
require(EC.addPoints(sharedSecret, plaintext) == this.C);
}
}


Pay2Decrypt 合约

致谢

这是 nChain 白皮书 1611 的实现。


[1] 这适用于可以公开的明文,因为它将暴露在区块链上。

[2] Taher Elgamal 被称为“SSL 之父”,与 Diffie–Hellman 一样,也是 Martin Hellman 的博士生。






推荐阅读
  • Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战?
    Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战? ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文探讨了利用JavaScript实现集合的对称差集算法的方法。该算法旨在处理多个数组作为输入参数,同时保留每个数组中元素的原始顺序。算法不会移除单个数组内的重复元素,但会删除在不同数组之间出现的重复项。通过这种方式,能够有效地计算出多个数组的对称差集。 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 当使用 `new` 表达式(即通过 `new` 动态创建对象)时,会发生两件事:首先,内存被分配用于存储新对象;其次,该对象的构造函数被调用以初始化对象。为了确保资源管理的一致性和避免内存泄漏,建议在使用 `new` 和 `delete` 时保持形式一致。例如,如果使用 `new[]` 分配数组,则应使用 `delete[]` 来释放内存;同样,如果使用 `new` 分配单个对象,则应使用 `delete` 来释放内存。这种一致性有助于防止常见的编程错误,提高代码的健壮性和可维护性。 ... [详细]
  • MyISAM和InnoDB是MySQL中最为广泛使用的两种存储引擎,每种引擎都有其独特的优势和适用场景。MyISAM引擎以其简单的结构和高效的读取速度著称,适用于以读操作为主、对事务支持要求不高的应用。而InnoDB引擎则以其强大的事务处理能力和行级锁定机制,在需要高并发写操作和数据完整性的场景下表现出色。选择合适的存储引擎应综合考虑业务需求、性能要求和数据一致性等因素。 ... [详细]
  • 家庭矿业:未来的投资前景依然可观?
    近年来,“家里有矿”这一说法常被用来形容家境殷实。结合2019年十大热词之一的“区块链”,“矿工”在区块链加密货币生态系统中占据着重要地位。随着技术的不断进步和市场的需求变化,家庭矿业作为一种新兴的投资方式,其未来发展前景依然值得期待。本文将探讨家庭矿业的投资潜力及其面临的挑战与机遇。 ... [详细]
author-avatar
赖雨蓉744_128
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有