门罗在生成交易时如何选择ringCT中除真实inputs以外的假inputs?

门罗的交易虽然被ringCT和bulletproof协议保护,但是内在仍然是遵守着bitcoin的UTXO模型。即每次交易的实际input,都需要对应上一个交易的output。

但是又由于ringCT的存在,门罗的交易需要选择之前出现过的他人的output来掩盖自己的output。

Read more »

使用机器学习与深度学习对恶意加密货币挖矿软件加密连接的检测

简介:

如今,恶意软件已成为一个流行问题。在利用受害者计算机资源的攻击中,一种常见的攻击与数字货币加密所需的大量计算资源有关。网络犯罪分子从受害者那里窃取计算机资源,将这些资源与他们从中受益的加密货币矿池相关联。这项研究工作的重点是提供一种解决方案,仅通过被动网络监控来检测此类滥用的加密货币挖矿活动。为此,我们确定了一组新的高度相关的网络流特征,与一组丰富的机器和深度学习模型联合使用,用于实时加密挖掘流检测。我们为训练和测试机器和深度学习模型部署了一个复杂而真实的加密挖掘场景,其中客户端与互联网上的真实服务器交互并使用加密连接。进行了一组完整的实验以证明,将这些信息量丰富的特征与复杂的机器学习模型相结合,即使流量被加密,也可以在线路上以电信级的精度和准确度检测到加密攻击。

索引术语: 加密挖矿检测、恶意软件检测、加密劫持检测、加密货币挖掘、网络流量测量、加密流量分类、机器学习、深度学习。

Read more »

Bitcontracts:传统区块链上支持智能合约

**摘要:**在本文中,我们提出了 Bitcontracts,这是一种新颖的解决方案,可以在未修改的传统加密货币(如原生不支持合约的比特币)之上安全高效地执行通用智能合约。我们解决方案的出发点是一个链下执行模型,其中合约的发行者指定一组服务提供商来执行合约的代码。如果法定数量的服务提供商报告相同的结果,并且客户可以自由选择他们信任和使用哪些此类合约,则合约的执行结果被接受。本文的主要技术贡献是如何在不修改底层区块链的情况下安全高效地实现这样的信任模型。我们还确定了区块链系统必须支持的一组通用属性,以便可以安全地添加富有表现力的智能合约,并根据这些标准分析流行的现有区块链。

Read more »

赋能跨链交易:一项分布式的加密货币交易协议

**摘要:**受比特币的启发,市场上出现了多种基于区块链技术的加密货币。由于区块链的特殊结构,传统货币与加密货币之间或不同类型加密货币之间的直接交易被认为是不可能的。
通常,不同货币之间的交易是通过一个中心化的第三方平台进行的。但是,它存在单点故障的问题,容易受到攻击,从而影响交易的安全性。在本文中,我们提出了一种分布式加密货币交易方案来解决中心化交易所的问题,可以实现不同类型加密货币之间的安全交易。我们的方案是通过以太坊区块链上的智能合约实现的,并部署在以太坊测试网络上。除了实现单个用户之间的交易,我们的方案还允许多个用户之间的交易。实验结果证明我们方案的成本是可以接受的。

Read more »

这里记录一些golang使用中的小细节,每次都像cgo那样单独写一篇有点太水了。

Read more »

基于区块链的加密货币通过维护全球分布式但同步的分类账区块链来实现点对点电子价值转移。任何独立的观察者都可以验证区块链的当前状态以及分类帐上所有交易的有效性。在比特币中,这项创新要求交易的所有细节都是公开的:发送方、接收方和转账金额。一般来说,我们将支付的隐私分为两个属性:(1)匿名性,在交易中隐藏发送者和接收者的身份;(2)保密性,隐藏转移的金额。虽然比特币通过比特币地址与现实世界身份的不可链接性提供了一些弱匿名性,但它缺乏任何机密性。这对比特币来说是一个严重的限制,对于许多用例来说可能是禁止的。如果这意味着他们的工资发布在公共区块链上,员工是否愿意以比特币获得他们的工资?

为了解决交易金额的保密问题,Maxwell [Max16] 引入了机密交易(CT),其中涉及的每笔交易金额都使用对金额的承诺隐藏起来,不让公众看到。这种方法似乎阻止了区块链的公开验证;观察者无法再检查交易输入的总和是否大于交易输出的总和,以及所有交易值是否为正。这可以通过在每笔交易中包含机密交易有效性的零知识证明来解决。

当前关于 CT 零知识证明 [PBF] 的提议要么大得令人望而却步,要么需要可信的设置。两者都不是可取的。虽然可以使用简洁的零知识证明 (SNARK) [BSCG13,GGPR13],但它们需要可信设置,这意味着每个人都需要相信设置已正确执行。人们可以通过使用 STARK [BSBTHR18] 来避免可信设置,但由此产生的范围证明虽然渐近有效,但实际上比目前提出的解决方案还要大。

如本文所述,没有可信设置的简短非交互式零知识证明在加密货币领域有许多应用。在证明通过网络传输或长期存储的任何分布式系统中,简短证明了总体成本的降低。

应用

我们首先讨论 Bulletproofs 的几个应用程序以及特定于这些应用程序的相关工作。 其他相关工作在第 1.3 节中讨论。

机密交易和 Mimblewimble

比特币和其他类似的加密货币使用基于交易输出的系统,其中每笔交易完全花费之前未花费交易的输出。 这些未花费的交易输出称为 UTXO。
比特币允许将单个 UTXO 用于许多不同的输出,每个输出都与不同的地址相关联。 要花费一个 UTXO,用户必须提供一个签名,或者更准确地说是一个 scriptSig,使交易 SCRIPT 能够评估为真 [BMC`15]。
除了 scriptSig 的有效性外,矿工还验证交易是否花费了之前未花费的输出,并且输入的总和大于输出的总和

Maxwell [Max16] 引入了“机密交易”的概念,其中交易中的输入和输出金额隐藏在 Pedersen 承诺中 [P`91]。
为了实现公开验证,交易包含一个零知识证明,即提交输入的总和大于提交输出的总和,并且所有输出都是正的,即它们位于区间 [0,2n][0, 2^n], 其中 2n2^n 远小于组大小。
当前所有机密交易的实现 [Max16, MP15, PBF`, NM`16] 都使用提交值的range proof范围证明,其中证明大小在 n 中是线性的。
这些范围证明是机密交易规模的主要贡献者。 在当前的实现中 [Max16],只有两个输出和 32 位精度的机密交易是 5.4 KB 字节,其中 5 KB 分配给范围证明。
即使最近进行了优化,范围证明仍将占用 3.8 KB。

我们在第 6 节中展示了 Bulletproofs 大大改进了这一点,即使对于单个范围证明,同时以边际额外成本(64 字节)将范围证明精度加倍。
logarithmic proof对数证明的大小还使证明者能够聚合多个范围证明,例如对于具有多个输出的交易,转换为一个简短的证明。
使用 Bulletproofs,mm 范围证明只是单个范围证明上的 O(log(m))O(log(m)) 附加群元素。这对于当前形式的机密交易已经很有用,因为大多数比特币交易都有两个或多个输出。
它还提供了一个有趣的机会,可以将来自不同方的多个范围证明聚合为一个证明,例如在 CoinJoin 交易中需要的证明 [Max13]。
在 4.5 节中,我们提出了一个简单有效的 MPC 协议,该协议允许多个用户使用单个聚合范围证明生成单个交易。
用户不必向任何其他参与者透露他们的机密交易价值。

Read more »

这门课是Blockchain的前置课。

主要讲的是一些安全方面的内容。

assignment两个,一个是期中考试(15%),一个叫mini research应该是论文解读相关(25%)。

剩下60%是考试。

平时tut主要是带你做题目方式答疑,tut和lec之间每周内容对应(这周lec这周tut讲完

Read more »

原文https://github.com/tevador/RandomX/blob/master/doc/design.md

为了最大限度地减少专用硬件的性能优势,工作量证明 (PoW) 算法必须通过针对现有通用硬件的特定功能来实现设备绑定
这是一项复杂的任务,因为我们必须针对来自不同制造商的具有不同架构的一大类设备。

有两类不同的通用处理设备:中央处理单元 (CPU) 和图形处理单元 (GPU)。RandomX 针对 CPU 的原因如下:

  • CPU非专业挖矿设备,对于正常用户来说更普遍且更容易访问。受 CPU 限制的算法更加平等,并允许更多参与者加入网络。这是[原始CryptoNote白皮书][cn_paper]中所述的目标之一。
  • 在不同的 CPU 体系结构中存在大量通用的本地硬件指令子集。GPU 则不能这样说。例如,NVIDIA 和 AMD GPU 没有通用的整数乘法指​​令
  • 所有主要的CPU 指令集都有详细的文档记录,有多个可用的开源编译器。相比之下,GPU 指令集通常是专有的,可能需要供应商特定的闭源驱动程序才能获得最大性能。

1. 设计考量

CPU 绑定工作量证明的最基本思想是“工作”必须是动态的。这利用了 CPU 接受两种输入的事实:数据(主要输入)和代码(指定对数据执行什么操作)。

相反,经典的加密散列hash函数 [ 3 ] 并不适合 CPU 的工作,因为它们的唯一输入是数据,而操作序列是固定的,可以通过专用集成电路ASIC更有效地执行。

1.1 动态工作量证明

一个动态PoW算法通常可以包括以下4个步骤:

  1. 生成随机程序。
  2. 将其翻译成CPU的本地机器代码(机器码)。
  3. 执行程序。
  4. 将程序的输出转换为加密安全值。
Read more »

首先

为了减少专用硬件的性能优势,工作量证明 (PoW) 算法必须通过针对现有通用硬件的特定功能来实现设备绑定。
这是一项复杂的任务,因为我们必须针对来自不同制造商的具有不同架构的一大类设备。

有两类不同的通用计算设备:中央处理单元 (CPU) 和图形处理单元 (GPU)。RandomX 针对 CPU 的原因如下:

0%