自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 区块链研究实验室|如何在Solidity库中使用状态变量函数

众所周知,Solidity库不能有状态变量。如果今天你在网上快速搜索一下Solidity库是否可以有状态变量,你会发现答案是否定的,它们不能。以下是关于库的Solidity文档:注意第一个限制:库不能具有状态变量。但文档将显示,可以通过这种方式将存储指针传递到库函数并访问状态变量。但是如果您想在库中定义、创建和使用新的状态变量,并且在不将它们作为参数传递的情况下使用它们呢?如果您想随时随地修改所需的合约存储,而又不传递存储指针怎么办?使用Solidity库可以做这些事情吗?

2020-08-24 14:38:55 436

原创 隐私加密系列|Grin与BEAM之间技术公开对比

简 介Grin和BEAM是两个基于Mimblewimble协议的开源加密货币项目。Mimblewimble协议最初是由匿名用户使用笔名Tom Elvis Jedusor(《哈利·波特》系列书籍中伏地魔名字的法语翻译)提出的。该用户登录了一个比特币研究(bitcoin research)互联网中继聊天(IRC)频道,并发布了一个链接,指向托管在Tor隐藏服务上的一篇文本文章。本文为构建区块链式交易的新方法提供了基础,该交易提供了固有的隐私性,并具有通过压缩链的交易历史记录显着减小区块链大小的能力。最..

2020-05-26 15:02:40 634

原创 区块链研究实验室|详解以太坊虚拟机(EVM)的数据存储机制

以太坊存储机制在EVM中允许执行智能合约代码。合约状态或内存存储在智能合约地址中。可以将这种存储视为位于智能合约地址的无限长度的数据结构数组。存储机制确保存储位置没有冲突,并遵循一组规则。使用这些规则,我们可以解码任何合约的状态。解码存储在映射中的数据需要知道所使用的密钥。合约数据的解码使用RPC调用eth_getStorageAt进行。插槽位置变量在智能合约的存储阵列中的位置由代码中...

2020-04-14 19:15:16 962

转载 区块链研究实验室|从Android调用区块链智能合约

本教程将展示如何直接从Android开发环境-Android Studio中调用智能合约。环境要求我们将使用Tezos区块链。为了使我们的Android java代码与现有的、部署的智能合约交互,我们需要使用TezosRio的TeZOSJ库。这个库有两个版本,一个是专门为使用EclipseIDE制作的通用Java应用程序编写的(TezosjPlainJava),另一个是用于Andro...

2020-03-06 16:21:53 715

转载 使用Java与区块链智能合约进行交互教程

简介本文是一个非常实用的分步教程,其目的是向Java开发人员(特别是)展示一种非常简单的与区块链智能合约进行交互的方式。了解使用库与区块链进行交互的难易程度。环境要求我们将使用Tezos区块链。为了使我们的Java代码与现有的、部署的智能合同交互,我们需要来自TezosRio的TeZOSJ库。 该库有两个版本,一个是专门为Android应用程序开发编写的版本(TezosJ_SDK),另...

2020-02-26 15:33:18 3768

原创 区块链研究实验室|以太坊智能合约版本升级的核心方法

本文主要说明以太坊的注册表合约、代理合约、继承的存储可升级性,以及更多的可升级性方法。在软件工程中,当发现新的bug和安全风险时,通常会对它们进行修补,并实时推送更新的版本。在智能合约开发中,可升级性并不是那么简单。因此,我们必须采取不同的做法。以太坊仍处于起步阶段,关于如何升级智能合约版本的争议很多,但我们将介绍一些当今最好的选择。注意:智能合约版本的可升级性仍然是研究的活跃领域。以...

2020-01-07 16:43:41 597

原创 跨链:详解Cosmos跨链间是如何相互通信

跨链作为区块链一种不可或缺的技术,我们研究跨链,以更好地了解区块链之间是如何相互通信。最初构建区块链时,他们设想能够提供“一刀切”的解决方案,这意味着所有交易,智能合约或其他任何事物都在单个链上执行。但是,现在很明显,这样的系统不太实用,尤其是在存在可伸缩性限制和创新约束的情况下。跨链是两个相对独立的区块链之间的互操作性。换句话说,由于区块链是以标准化的方式构建的,因此它允许区块链彼此通...

2019-12-12 14:49:43 1175 1

原创 图片

2019-12-10 13:51:19 116

转载 区块链研究实验室|以太坊上状态通道的应用案例

频繁进行交易以推进以太坊虚拟机是不必要的昂贵和缓慢。今天大多数使用以太坊的应用程序都通过更新链上合约的存储变量来工作,用户为此支付交易费用并花长时间等待区块确认。为了使用应用程序,我们强迫用户手动将数据库更新提交给世界上最安全,分散和无信任的环境。通过将一些功能转移到客户端代码上,而不是单独依靠以太坊为我们做所有事情,我们可以编写完全安全的应用程序。通常我们将这些称为“layer2”技术...

2019-12-09 10:27:39 345

原创 区块链研究实验室|比较两个革命性的网络:闪电网络和互联网世界

从亚里斯多德(公元前4世纪)到康德(公元18世纪)的几乎每一个认识论者都同意,我们通过对世界事物进行分类和比较来学习。苹果和橘子可以相比吗? 问题不是它们是否可以比较,而是我们可以从比较中学到什么。即使闪电网络是人类的发明,我们对此仍然知之甚少。所需的LSP数量如何随用户数量变化?图的复杂度如何与网络的吞吐量相关?何时会大规模采用?基于比特币的闪电经济是什么样的?这项技术将如何改...

2019-12-04 10:03:20 240

转载 区块链研究实验室|Merkle Bridge-链间资产转移的简单协议

Merkle Bridge的目标是成为一个简单轻巧的协议,用于在区块链之间资产转移,同时提供分布式的监管和审查阻力。第一个应用程序是将Aergo ERC20代币转移到Aergo的主网原生代币。一旦部署了网桥,任何以太坊或Aergo资产都将可以在这些网络之间直接转移。在本文中,我们将介绍该协议的一些技术细节。我们可以用以下两种方式锚定(2WP)的资产转移:首先在区块链A上存入代币,然后要将代币转...

2019-12-02 16:12:22 421

转载 区块链研究实验室|以太坊的混合二层扩容协议曙光

目前的二层扩容的方法--基本是Plasma和状态通道。正从理论走向实践,但与此同时,将这些技术视为以太坊成熟的扩容解决方案时所面临的内在挑战也显而易见了。可以说以太坊之所以成功,很大程度上是因为它具有友好的开发体验:开发者编写一个程序,发布该程序之后,任何人都可以与它进行交互。另一方面还依赖了状态通道的设计或Plasma应用程序依赖于许多关于激励和特定于应用程序的开发。状态通道在特定的用例中表现得...

2019-11-25 11:15:08 268

转载 区块链研究实验室|构建主链与侧链之间无信任的双向桥接网络

概述我们提出了一种新颖的方法,用于在主链和侧链之间构建无信任的双向桥梁。通过永久停止侧链,即使在乐观的情况下,我们也不再需要严格的同步要求和长时间的退出延迟。而代之的是,只有在侧链暂停很长一段时间后才允许提款。一旦停止了侧链,就可以通过流动性提供者网络使用原子交换立即提取资金以进行使用。可以同时启动新的侧链,以终止旧的侧链以接受并开始处理掉期后的资金。现有提案存在的问题...

2019-11-15 10:34:41 567

转载 区块链研究实验室|可延展性攻击:为何如此重要

加密领域的许多人都听说过“交易延展性”,并且它是“不好的”。但是,什么是“交易延展性”,为什么不好?让我们快速了解一下。在像比特币这样的加密货币中,交易是在用户之间转移价值的原子操作。用户创建事务并将其发布到网络。这些交易传播网络并最终被挖掘到区块链中。接收者使用区块链来确定交易是否得到确认。在随着成千上万笔交易的进行,用户如何快速识别它们以便能够区分它们?如何在不使用某些缓慢的全局注册表...

2019-11-07 10:06:56 365

转载 区块链研究实验室|以太坊的混合二层扩容协议曙光

目前的二层扩容的方法--基本是Plasma和状态通道。正从理论走向实践,但与此同时,将这些技术视为以太坊成熟的扩容解决方案时所面临的内在挑战也显而易见了。可以说以太坊之所以成功,很大程度上是因为它具有友好的开发体验:开发者编写一个程序,发布该程序之后,任何人都可以与它进行交互。另一方面还依赖了状态通道的设计或Plasma应用程序依赖于许多关于激励和特定于应用程序的开发。状态通道在特定的用例中表现得...

2019-11-04 15:04:19 303

转载 区块链研究实验室|形式验证如何帮助防止Gridlock错误

最近在Edgeware的Lockdrop智能合约中发现了一个隐藏的DoS错误(称为Gridlock),该合约已锁定了价值数亿美元的以太币。由于存在此错误,Edgeware必须重新部署合约的稳定版本。因此,当前在主网上并行存在两个Lockdrop合约(旧版本和新版本)。(这意味着您可以向这两个合约中的任何一个发送交易以锁定您的以太币,直到旧的合约遭到攻击并无法使用为止。)在本文中,我们将回...

2019-10-30 12:30:27 142

转载 区块链研究实验室| 在Solidity智能合约中使用Enums之前要三思

想象一下,你正在写一个Solidity智能合约,其中一个属性可以被描述为类型或状态。换句话说,来自一组有限的选项。你马上对自己说:“太好了,我只会使用枚举类型来表示这个状态变量。”一方面,这种方法有一些好处,比如增加可读性。另一方面,它很容易让你走上一条可能导致问题的棘手道路。好吧,如果枚举(ENUM)成员仅封装在一个合约中并且从未在其他文件中提及过,那么一切都可以。然而DAPP通常由几...

2019-10-29 20:17:40 227

转载 区块链研究实验室|区块链数字资产的标记化

简介在本文中,我将为数字资产实现一个简单有效的标记化智能合约。如果你觉得代码有用,请随意重用。本文的第二个目的是说明为什么一些用于区块链开发的用例是有用的,而另一些用例则更值得怀疑。通常关键在于权力下放是否合理。区块链允许我们构建不同于传统解决方案的软件。使用区块链,您可以构建可信任的分布式应用程序,以存储未被篡改的数据。分布式是一个必要的要求,你可以开发许多不同的区块链解决方案,但要...

2019-10-29 19:56:50 236

转载 区块链研究实验室| 关于polkadot的substrate与runtime编译教程-part2

json文件的chain specchainspec JSON是一个大的JSON对象,通过substrate build-spec命令生成。此命令通过引用节点的导入runtime模块并查找需要定义的公开配置来工作。这些将是空值或提供默认值。本质上,runtime模块可以依赖于“创世配置”,换句话说,我们在区块链首次初始化和构建其状态时提供的配置。这一状态是通过创世地块-第一个生产的区块...

2019-10-28 15:56:04 384

转载 区块链研究实验室| 关于polkadot的substrate与runtime编译教程-part1

本文旨在介绍如何开始构建可支持您自己的Runtime模块的自定义Substrate链: 我们将通过substrate安装和设置来学习 探索substrate配置以及如何使用Polkadot JS浏览链状态 专注于介绍runtime模块的结构,这是一种为链添加功能的方法。 在substrate进行开发substrate和并发runtime模块是用rust开发的,ru...

2019-10-24 15:13:41 361

转载 区块链研究实验室|新尝试更改Libra的move交易代码

Libra是Facebook最新推出的一种技术。它看起来很有前途,所以我们正在探索和学习我们可以用它做什么!我们将使用Move(Libra智能合约的编程语言),看看能不能做几笔交易。概述我们将要实现什么功能: 在本地计算机上启动Libra Validator。 在本地计算机上启动Libra CLI。 在我们本地的Libra区块链中进行一些交易。 更新...

2019-10-17 15:07:27 256

转载 区块链研究实验室|减少智能合约代码复杂性并提高可维护性

在本文中,我将分享一些示例,说明消除特殊情况如何减少代码复杂性并提高可维护性。特殊最大值常见的特殊情况是使用0表示“无最大值”。这种特殊情况通常很容易消除。Special Expirations看下面的代码????在这段代码中,0是一种特殊情况,表示“没有过期”。这种特殊情况是不直观的,它增加了require语句的复杂性。然而,真正的危险是团队中的一个新开发人员忽略了这个微妙...

2019-10-15 10:47:24 378

转载 区块链研究实验室|停止使用Solidity的transfer()函数

以太坊看起来EIP 1884正在伊斯坦布尔硬叉前进。这一变化增加了sload操作的gas成本,因此打破了一些现有的智能合约。这些合约将破裂,因为它们的fallback函数过去消耗的gas少于2300,现在它们将消耗更多。为什么2300gas是重要的?如果通过Solidity的transfer()或send()方法调用合约的fallback函数,则它是合约的fallback函数。自从t...

2019-10-13 12:11:41 504

转载 区块链研究实验室|使用GUI(Remix)和Ganache调试Solidity

调试Solidity非常困难。随着时间的流逝,诸如Ganache,Remix和solidity-test-helpers之类的工具使它变得更容易,但仍然存在bug。使用ganache进行调试的gui将有助于减轻许多这些痛苦,并允许开发人员可视化地处理和调试合同。现在有一种方法可以做到这一点!本教程使用Ganache(即时事务)和Remix调试本地Solidity项目。环境配置以下内...

2019-10-10 11:17:20 1044 1

转载 区块链研究实验室|简单的区块链数据验证应用程序

简介在本文中,我将用示例代码来讲述我所知道的最简单的区块链应用程序的数据验证问题。想象一下下面的用例。您收到一份经过多方认可的文件,但是又希望确保其的真实性。该文件可能是您正在购买的汽车的服务手册,也可能是一份购房文件,证明您正在购买的房子确实属于卖方。对文件进行数字签名以防止被篡改,这已经不是什么新鲜事。您可以获取文件的内容并使用你的私钥进行加密,生成一个加密文件,将该签名与文件一起...

2019-09-18 16:44:33 446

转载 区块链研究实验室|基于solidity智能合约在tron网络中进行异步调用

目前以太坊的编程语言Solidity还是非常基础。Tron也使用Solidity,因此具有相同的限制。目前,Solidity将智能合约简化为仅存储数值并进行一些基本的数学运算。并且大多数智能逻辑都写在智能合约之外:在DAPP或服务器中。#TRON中异步调用的两种情况是什么? 外部调用...到数据库,Web服务,(分布式)文件系统,邮件服务,到NodeJS oracle以克服Soli...

2019-09-16 15:49:07 561

转载 区块链研究实验室|如何使用以太坊、DAI,标记和结算“自动执行”智能发票

注意:此博客文章的目标受众主要是熟悉区块链和智能合约的开发人员。并非所有开发人员都具有丰富的经济和金融背景。因此,我们建议您阅读关于这些金融方面的博文。定义“智能发票”我们的目标是展示我们如何使用智能合约来指定和执行现实世界发票的支付,从而将钱从买方转移到卖方。更具体地说,我们希望实现一个功能,以确保一旦买方接受发票,他就承诺在到截止日期进行付款。创建以太坊智能合约时会存在某些限制,这...

2019-08-27 16:50:36 314

转载 区块链研究实验室 |使用Ethers.js构建以太坊DApp

你在以太坊上构建DApps时,你很可能最常使用Web3.js来构建javascript前端。Ethers.js是一个轻量级的JavaScript库,可以用来替代Web3.js来构建javascript前端并与以太坊区块链进行交互。这篇文章/教程中,我将展示如何使用Ethers.js构建一个简单的DApp。我希望这有助于您评估并开始使用Ethers.js进行下一个项目。在本教程中,我们将创建一个...

2019-08-21 17:03:04 829

转载 区块链研究实验室 | PoS区块链使用VDFs时间锁

PoW工作证明是在区块链网络上形成共识的最常见方法。不幸的是,PoW具有不可忽略的能源损耗,同时研究人员一直在寻求可替代的共识机制。每种技术都旨在提高相同级别的安全性,同时降低能源需求。有许多替代的方案,例如股权证明(PoS)通常被认为是平衡权力下放,安全性和效率的最佳协议。在PoS系统中,验证节点将新产生区块加入链中。要成为验证人,必须在系统抵押一定额度的代币。在成为验证人期间,如果您被其他...

2019-08-13 14:53:12 294

转载 区块链研究实验室 | 使用MySQL存储以太坊事件

在本文中,我将演示一种缓存以太坊事件的简单方法。我只想说,通常我们将事务用于链下操作,例如跟踪令牌的传输或检索特定事务的筛选列表,就像一个SQL查询一样。假设我们想要创建一个跟踪令牌传输的网站,Etherscan。我们只需要一波简单的操作,比如: 取得所有令牌转移信息 取得以太坊转账来源地址 取得以太坊转账目标地址 获得特定金额的转账信息 ...

2019-08-07 16:16:47 438

转载 区块链研究实验室 |分片:需要多少分片数量才能足够安全?

在不影响安全性的情况下实现性能最大化之间的权衡。分片背后的概念很简单:网络验证器不需要每个事务通过一个验证器池,而是可以分为称为分片的子组,每个事务必须只通过其中一个分片。这是一个强大的思想,它允许网络根据验证器的数量进行扩展。分片将网络划分为不同的验证子组,这意味着只有一小部分必须验证每个事务,而不是大多数验证程序。但是,分片会带来新的风险。为了使网络对所有用户都安全,所有分片都...

2019-07-18 16:10:34 648

转载 区块链研究实验室 | 闪电网络编码教程-花费HTLC违约补救措施

本文的目标是花费HTLC违约补救措施,这与白皮书的图13+14相对应。使用HTLC违约补救措施的19个步骤:由于重复的讲解,教程直接跳到步骤11。前11个步骤操作教程,请参考之前的文章。 多签名资金 构建C1A和C1B(No sign) 构建RD1a和RD1b C1A和C1B的交换签名 构建C2A和C2B(No sign) 构建...

2019-07-10 11:05:48 152

转载 区块链研究实验室 | 闪电网络编码教程-违约补救措施

这是第二篇解释闪电网络流程的文章。这一次,我将解释的是与白皮书图9相对应的违约补救措施。花费违规补救措施的10个步骤:由于第一篇文章应讲解前面4个骤,将不在本篇文章重新讲述。 多签名资金 构建C1a和C1b(No Sign) 构建RD1a和RD1b C1a和C1b的交换签名 建立C2a和C2b(No Sign) 构建RD2a和R...

2019-07-03 09:40:14 232

转载 区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程

为了更好地理解我的研究,我将PlasmaMVP表示为javascript。MVP是Vbuterin最初提出的minimal viable plasma,旨在以非常简单的方式提供plasma的基本安全特性。基于此提议,OmiseGo实施了MVP,旨在将来使用Plasma。 我主要使用此实现作为参考。实际上,Plasma提案的白皮书仍然是高度概述,它还没有提到详细的实现方式。请注意,Omis...

2019-06-28 10:50:35 257 1

转载 区块链研究实验室 | 基于substrate创建Ink智能合约-part2

Ink是一种智能合约语言,专门用于基于Substrate的区块链。我们将访问minting、transfer和approval函数的实现,并解释在开发中遇到的语法。Ink建立在Rust编程语言之上,因此我们将在这里探讨一些Rust概念以及它们如何与我们的智能合约一起工作。在这篇文章继续之前,建议阅读一下上一篇文章,我们介绍了Ink,如何将它与Rust和Substrate一起安装,以及Ink语法...

2019-06-28 10:50:28 346

转载 区块链研究实验室 | 基于substrate创建Ink智能合约

Parity的Substrate区块链框架,在最终版本开发中取得不错的进展。Ink是Parity为基于Substrate的区块链编写智能合约的解决方案。与Substrate一样,Ink建立在Rust之上,因此遵循Rust语言规则和语法。本文将介绍一个示例在智能合约中复制一个ERC721令牌,通常称为以太坊区块链上的ERC721令牌。这是系列文章的第1部分,将介绍创建和部署此Ink智能合约的...

2019-06-21 09:43:23 945

转载 区块链研究实验室| 基于HyperLedger Fabric架构构建ERC20令牌 part II

setter函数完成getter调用后,让我们研究simpletoken中提供的setter函数。在进行这些交易之前,您需要满足认可政策,在该帐户中,您将在此处看到一些额外的字段。第一次调用setter到特定对等体时也需要一些时间,之后它几乎立即返回结果。 此外,CLI的配置也设置为Org1 peer0,您可以使用以下命令检查:您可以通过运行以下命令更改为peer0,Org2:...

2019-06-21 09:43:13 302

转载 区块链研究实验室| HyperLedger Fabric架构构建ERC20令牌 part I

由于其高TPS和作为区块链作为服务平台的行为,许多新创新者正在选择Hyperledger来部署他们的区块链业务。因此,在本博客中,我们将讨论使用node.js在Hyperledger中创建基于erc20的令牌链代码的方法。为何选择ERC20?ERC20是以太坊广泛测试和接受的,将其整合到Hyperledger中,可以轻松地为基于Hyperledger的任何令牌编写安全且可扩展的链码。我...

2019-06-21 09:43:03 385

转载 区块链研究实验室 | 以太坊精华:复杂共识协议运作方式

背景介绍分布式系统最重要的部分是其共识层。但是,“共识”是什么意思?根据定义,它是一个群体作为一个整体所达成的意见或立场。这可能意味着大多数相关人员达成一致或作出判断。共识协议通常可以被认为具有: 提出建议的一组支持者。 将建议标记为有效的一组测试。 对每一项提案投票的一组选民。 决定一项提案是否被接受或否决的投票机制。 当做出决定时触发的一组...

2019-06-14 10:08:55 483

转载 区块链研究实验室 | 探讨一下区块链中随机数安全问题

前言“随机数”在计算机程序中并不少见,开发人员也会经常使用随机数进行数值的模拟、预测。在C++程序里,我们经常使用一定的种子来进行随机数的生成过程。在计算机程序中,随机数可以被分为真随机数与伪随机数。而真随机数是十分难实现的,例如使用筛子、转轮等等。对于伪随机数来说,我们又分为: 强伪随机数:难以预测的随机数,常用于密码学。 弱伪随机数:易于预测的随机数。 随机数有3...

2019-06-13 09:56:36 289

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除