<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[willam1的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/willam1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; willam1]]></copyright><item><title><![CDATA[区块链研究实验室｜如何在Solidity库中使用状态变量函数]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/108198837</link><guid>https://blog.youkuaiyun.com/willam1/article/details/108198837</guid><author>willam1</author><pubDate>Mon, 24 Aug 2020 14:38:55 +0800</pubDate><description><![CDATA[众所周知，Solidity库不能有状态变量。

如果今天你在网上快速搜索一下Solidity库是否可以有状态变量，你会发现答案是否定的，它们不能。

以下是关于库的Solidity文档：



注意第一个限制：库不能具有状态变量。

但文档将显示，可以通过这种方式将存储指针传递到库函数并访问状态变量。

但是如果您想在库中定义、创建和使用新的状态变量，并且在不将它们作为参数传递的情况下使用它们呢？

如果您想随时随地修改所需的合约存储，而又不传递存储指针怎么办？

使用Solidity库可以做这些事情吗？
]]></description><category></category></item><item><title><![CDATA[隐私加密系列｜Grin与BEAM之间技术公开对比]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/106356375</link><guid>https://blog.youkuaiyun.com/willam1/article/details/106356375</guid><author>willam1</author><pubDate>Tue, 26 May 2020 15:02:40 +0800</pubDate><description><![CDATA[简  介

Grin和BEAM是两个基于Mimblewimble协议的开源加密货币项目。Mimblewimble协议最初是由匿名用户使用笔名Tom Elvis Jedusor（《哈利·波特》系列书籍中伏地魔名字的法语翻译）提出的。该用户登录了一个比特币研究（bitcoin research）互联网中继聊天（IRC）频道，并发布了一个链接，指向托管在Tor隐藏服务上的一篇文本文章。本文为构建区块链式交易的新方法提供了基础，该交易提供了固有的隐私性，并具有通过压缩链的交易历史记录显着减小区块链大小的能力。最..]]></description><category></category></item><item><title><![CDATA[区块链研究实验室｜详解以太坊虚拟机（EVM）的数据存储机制]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/105518884</link><guid>https://blog.youkuaiyun.com/willam1/article/details/105518884</guid><author>willam1</author><pubDate>Tue, 14 Apr 2020 19:15:16 +0800</pubDate><description><![CDATA[以太坊存储机制

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

插槽位置

变量在智能合约的存储阵列中的位置由代码中...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室｜从Android调用区块链智能合约]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/104698439</link><guid>https://blog.youkuaiyun.com/willam1/article/details/104698439</guid><author>willam1</author><pubDate>Fri, 06 Mar 2020 16:21:53 +0800</pubDate><description><![CDATA[本教程将展示如何直接从Android开发环境-Android Studio中调用智能合约。



环境要求

我们将使用Tezos区块链。为了使我们的Android java代码与现有的、部署的智能合约交互，我们需要使用TezosRio的TeZOSJ库。这个库有两个版本，一个是专门为使用EclipseIDE制作的通用Java应用程序编写的（TezosjPlainJava），另一个是用于Andro...]]></description><category></category></item><item><title><![CDATA[使用Java与区块链智能合约进行交互教程]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/104517722</link><guid>https://blog.youkuaiyun.com/willam1/article/details/104517722</guid><author>willam1</author><pubDate>Wed, 26 Feb 2020 15:33:18 +0800</pubDate><description><![CDATA[简介

本文是一个非常实用的分步教程，其目的是向Java开发人员（特别是）展示一种非常简单的与区块链智能合约进行交互的方式。了解使用库与区块链进行交互的难易程度。

环境要求

我们将使用Tezos区块链。为了使我们的Java代码与现有的、部署的智能合同交互，我们需要来自TezosRio的TeZOSJ库。 该库有两个版本，一个是专门为Android应用程序开发编写的版本（TezosJ_SDK），另...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|以太坊智能合约版本升级的核心方法]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/103877245</link><guid>https://blog.youkuaiyun.com/willam1/article/details/103877245</guid><author>willam1</author><pubDate>Tue, 07 Jan 2020 16:43:41 +0800</pubDate><description><![CDATA[本文主要说明以太坊的注册表合约、代理合约、继承的存储可升级性，以及更多的可升级性方法。

在软件工程中，当发现新的bug和安全风险时，通常会对它们进行修补，并实时推送更新的版本。在智能合约开发中，可升级性并不是那么简单。因此，我们必须采取不同的做法。

以太坊仍处于起步阶段，关于如何升级智能合约版本的争议很多，但我们将介绍一些当今最好的选择。

注意：智能合约版本的可升级性仍然是研究的活跃领域。以...]]></description><category></category></item><item><title><![CDATA[跨链：详解Cosmos跨链间是如何相互通信]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/103508933</link><guid>https://blog.youkuaiyun.com/willam1/article/details/103508933</guid><author>willam1</author><pubDate>Thu, 12 Dec 2019 14:49:43 +0800</pubDate><description><![CDATA[跨链作为区块链一种不可或缺的技术，我们研究跨链，以更好地了解区块链之间是如何相互通信。

最初构建区块链时，他们设想能够提供“一刀切”的解决方案，这意味着所有交易，智能合约或其他任何事物都在单个链上执行。但是，现在很明显，这样的系统不太实用，尤其是在存在可伸缩性限制和创新约束的情况下。

跨链是两个相对独立的区块链之间的互操作性。换句话说，由于区块链是以标准化的方式构建的，因此它允许区块链彼此通...]]></description><category></category></item><item><title><![CDATA[图片]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/103474185</link><guid>https://blog.youkuaiyun.com/willam1/article/details/103474185</guid><author>willam1</author><pubDate>Tue, 10 Dec 2019 13:51:19 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|以太坊上状态通道的应用案例]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/103453565</link><guid>https://blog.youkuaiyun.com/willam1/article/details/103453565</guid><author>willam1</author><pubDate>Mon, 09 Dec 2019 10:27:39 +0800</pubDate><description><![CDATA[频繁进行交易以推进以太坊虚拟机是不必要的昂贵和缓慢。今天大多数使用以太坊的应用程序都通过更新链上合约的存储变量来工作，用户为此支付交易费用并花长时间等待区块确认。

为了使用应用程序，我们强迫用户手动将数据库更新提交给世界上最安全，分散和无信任的环境。

通过将一些功能转移到客户端代码上，而不是单独依靠以太坊为我们做所有事情，我们可以编写完全安全的应用程序。通常我们将这些称为“layer2”技术...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|比较两个革命性的网络：闪电网络和互联网世界]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/103381410</link><guid>https://blog.youkuaiyun.com/willam1/article/details/103381410</guid><author>willam1</author><pubDate>Wed, 04 Dec 2019 10:03:20 +0800</pubDate><description><![CDATA[从亚里斯多德（公元前4世纪）到康德（公元18世纪）的几乎每一个认识论者都同意，我们通过对世界事物进行分类和比较来学习。苹果和橘子可以相比吗？ 问题不是它们是否可以比较，而是我们可以从比较中学到什么。

即使闪电网络是人类的发明，我们对此仍然知之甚少。所需的LSP数量如何随用户数量变化？图的复杂度如何与网络的吞吐量相关？何时会大规模采用？基于比特币的闪电经济是什么样的？这项技术将如何改...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|Merkle Bridge-链间资产转移的简单协议]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/103350090</link><guid>https://blog.youkuaiyun.com/willam1/article/details/103350090</guid><author>willam1</author><pubDate>Mon, 02 Dec 2019 16:12:22 +0800</pubDate><description><![CDATA[Merkle Bridge的目标是成为一个简单轻巧的协议,用于在区块链之间资产转移，同时提供分布式的监管和审查阻力。第一个应用程序是将Aergo ERC20代币转移到Aergo的主网原生代币。一旦部署了网桥，任何以太坊或Aergo资产都将可以在这些网络之间直接转移。在本文中，我们将介绍该协议的一些技术细节。

我们可以用以下两种方式锚定（2WP）的资产转移：首先在区块链A上存入代币，然后要将代币转...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|以太坊的混合二层扩容协议曙光]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/103234667</link><guid>https://blog.youkuaiyun.com/willam1/article/details/103234667</guid><author>willam1</author><pubDate>Mon, 25 Nov 2019 11:15:08 +0800</pubDate><description><![CDATA[目前的二层扩容的方法--基本是Plasma和状态通道。正从理论走向实践，但与此同时，将这些技术视为以太坊成熟的扩容解决方案时所面临的内在挑战也显而易见了。可以说以太坊之所以成功，很大程度上是因为它具有友好的开发体验：开发者编写一个程序，发布该程序之后，任何人都可以与它进行交互。另一方面还依赖了状态通道的设计或Plasma应用程序依赖于许多关于激励和特定于应用程序的开发。状态通道在特定的用例中表现得...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|构建主链与侧链之间无信任的双向桥接网络]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/103080504</link><guid>https://blog.youkuaiyun.com/willam1/article/details/103080504</guid><author>willam1</author><pubDate>Fri, 15 Nov 2019 10:34:41 +0800</pubDate><description><![CDATA[概述

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



现有提案存在的问题

...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|可延展性攻击：为何如此重要]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/102948484</link><guid>https://blog.youkuaiyun.com/willam1/article/details/102948484</guid><author>willam1</author><pubDate>Thu, 07 Nov 2019 10:06:56 +0800</pubDate><description><![CDATA[加密领域的许多人都听说过“交易延展性”，并且它是“不好的”。但是，什么是“交易延展性”，为什么不好？让我们快速了解一下。

在像比特币这样的加密货币中，交易是在用户之间转移价值的原子操作。用户创建事务并将其发布到网络。这些交易传播网络并最终被挖掘到区块链中。接收者使用区块链来确定交易是否得到确认。

在随着成千上万笔交易的进行，用户如何快速识别它们以便能够区分它们？如何在不使用某些缓慢的全局注册表...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|以太坊的混合二层扩容协议曙光]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/102896405</link><guid>https://blog.youkuaiyun.com/willam1/article/details/102896405</guid><author>willam1</author><pubDate>Mon, 04 Nov 2019 15:04:19 +0800</pubDate><description><![CDATA[目前的二层扩容的方法--基本是Plasma和状态通道。正从理论走向实践，但与此同时，将这些技术视为以太坊成熟的扩容解决方案时所面临的内在挑战也显而易见了。可以说以太坊之所以成功，很大程度上是因为它具有友好的开发体验：开发者编写一个程序，发布该程序之后，任何人都可以与它进行交互。另一方面还依赖了状态通道的设计或Plasma应用程序依赖于许多关于激励和特定于应用程序的开发。状态通道在特定的用例中表现得...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|形式验证如何帮助防止Gridlock错误]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/102816792</link><guid>https://blog.youkuaiyun.com/willam1/article/details/102816792</guid><author>willam1</author><pubDate>Wed, 30 Oct 2019 12:30:27 +0800</pubDate><description><![CDATA[最近在Edgeware的Lockdrop智能合约中发现了一个隐藏的DoS错误（称为Gridlock），该合约已锁定了价值数亿美元的以太币。由于存在此错误，Edgeware必须重新部署合约的稳定版本。因此，当前在主网上并行存在两个Lockdrop合约（旧版本和新版本）。（这意味着您可以向这两个合约中的任何一个发送交易以锁定您的以太币，直到旧的合约遭到攻击并无法使用为止。）

在本文中，我们将回...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室| 在Solidity智能合约中使用Enums之前要三思]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/102807550</link><guid>https://blog.youkuaiyun.com/willam1/article/details/102807550</guid><author>willam1</author><pubDate>Tue, 29 Oct 2019 20:17:40 +0800</pubDate><description><![CDATA[想象一下，你正在写一个Solidity智能合约，其中一个属性可以被描述为类型或状态。换句话说，来自一组有限的选项。你马上对自己说：“太好了，我只会使用枚举类型来表示这个状态变量。”一方面，这种方法有一些好处，比如增加可读性。另一方面，它很容易让你走上一条可能导致问题的棘手道路。



好吧，如果枚举（ENUM）成员仅封装在一个合约中并且从未在其他文件中提及过，那么一切都可以。然而DAPP通常由几...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室|区块链数字资产的标记化]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/102807317</link><guid>https://blog.youkuaiyun.com/willam1/article/details/102807317</guid><author>willam1</author><pubDate>Tue, 29 Oct 2019 19:56:50 +0800</pubDate><description><![CDATA[简介

在本文中，我将为数字资产实现一个简单有效的标记化智能合约。如果你觉得代码有用，请随意重用。

本文的第二个目的是说明为什么一些用于区块链开发的用例是有用的，而另一些用例则更值得怀疑。通常关键在于权力下放是否合理。

区块链允许我们构建不同于传统解决方案的软件。使用区块链，您可以构建可信任的分布式应用程序，以存储未被篡改的数据。分布式是一个必要的要求，你可以开发许多不同的区块链解决方案，但要...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室| 关于polkadot的substrate与runtime编译教程-part2]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/102782006</link><guid>https://blog.youkuaiyun.com/willam1/article/details/102782006</guid><author>willam1</author><pubDate>Mon, 28 Oct 2019 15:56:04 +0800</pubDate><description><![CDATA[json文件的chain spec

chainspec JSON是一个大的JSON对象，通过substrate build-spec命令生成。此命令通过引用节点的导入runtime模块并查找需要定义的公开配置来工作。这些将是空值或提供默认值。

本质上，runtime模块可以依赖于“创世配置”，换句话说，我们在区块链首次初始化和构建其状态时提供的配置。这一状态是通过创世地块-第一个生产的区块...]]></description><category></category></item><item><title><![CDATA[区块链研究实验室| 关于polkadot的substrate与runtime编译教程-part1]]></title><link>https://blog.youkuaiyun.com/willam1/article/details/102723746</link><guid>https://blog.youkuaiyun.com/willam1/article/details/102723746</guid><author>willam1</author><pubDate>Thu, 24 Oct 2019 15:13:41 +0800</pubDate><description><![CDATA[本文旨在介绍如何开始构建可支持您自己的Runtime模块的自定义Substrate链：


	我们将通过substrate安装和设置来学习
	
	
	探索substrate配置以及如何使用Polkadot JS浏览链状态
	
	
	专注于介绍runtime模块的结构，这是一种为链添加功能的方法。
	
在substrate进行开发

substrate和并发runtime模块是用rust开发的，ru...]]></description><category></category></item></channel></rss>