以太坊现在是用于创建去中心化应用程序的最受欢迎的平台之一,该平台正在积极开发中。 我们今天将亲自尝试的齐柏林飞艇创新之一。 对于那些在“坦克”中的人,齐柏林飞艇公司是一家开发和验证智能合约安全性的公司。 OpenZeppelin智能合约库是他们最著名的产品。
事实证明,Solidity的开发工具仍在开发中,有时不允许开发人员使用智能合约技术的全部功能。 例如,“标准库”是一个限制,因为每次将现有代码重新加载到网络中时,都会导致“部署”代码的成本和潜在错误的数量增加。 所有这些都导致在创建大型多功能分散应用程序方面的重大限制。
什么是齐柏林飞艇OS?

Zeppelin OS是一个开源平台,由基于EVM的工具和服务组成,旨在开发和管理分散的应用程序。
齐柏林飞艇团队确定了四个最重要的组成部分,其中一些已经实施并且可以使用。
- Zeppelin OS内核是一个更新的,社区驱动的“核心”平台。 它由区块链中的一组库组成,开发人员可以连接到他们的项目。 先驱是OpenZeppelin,现已可用。
- Zeppelin OS Scheduler将允许合同要求异步执行功能,并且还使任何参与者能够支付汽油费,并为此获得奖励。
- Zeppelin OS Marketplace是合同与应用程序之间交互的重要组成部分,是一种用于区块链的App Store / Google Play。 允许您使用其他服务来创建更复杂的应用程序。
- Zeppelin OS链下工具-一组用于处理和分析分散式应用程序的工具。
是时候自己尝试了!
我真的很想开始使用Zeppelin OS,编写第一个合同并进行更新。 检查一切是否真的如此,以及开发人员是否欺骗。
因此,将保留更新的存储和代理设备以供将来的文章使用,我们将继续使用已经实现的功能。
可以在此处查看所有Zeppelin OS文档。 首先,您需要安装zos:
$ npm install --global zos
现在创建项目目录以及您需要的所有内容:
$ mkdir zostest && cd zostest $ npm init $ zos init zostest
之后,将创建所有必需的配置文件,因此现在您可以继续编写合同。 作为测试合同,让我们写一个小的“变量存储库”:
pragma solidity 0.4.24; import "zos-lib/contracts/migrations/Migratable.sol"; contract SimpleStorage is Migratable { uint storedData; function initialize(uint256 _x) isInitializer("SimpleStorage", "0") public { storedData = _x; } function get() public constant returns (uint) { return storedData; } }
我们编译并添加合同:
$ zos add SimpleStorage

运行测试网络(在单独的终端中):
$ npx ganache-cli --port 9545
我们进入本地网络,同时创建一个新的配置文件zos.local.json
:
$ zos push --network local

事情很小,它仍然需要创建我们更新的合同,同时为我们的“存储库”运行带有参数88的initialize()
:
$ zos create SimpleStorage --init initialize --args 88 --network local

现在,让我们尝试添加一个函数来增加“存储”中的变量,例如:
pragma solidity 0.4.24; import "zos-lib/contracts/migrations/Migratable.sol"; contract SimpleStorage is Migratable { uint storedData; function initialize(uint256 _x) isInitializer("SimpleStorage", "0") public { storedData = _x; } function incrementStorage(uint256 _x) public { storedData += _x; } function get() public constant returns (uint) { return storedData; } }
然后,您需要更新网络上的合同:
$ zos push --network local

$ zos update SimpleStorage --network local

现在您可以看到发生了什么。 为此,请使用truffle console
:
$ npx truffle console --network=local truffle(local)> sS = SimpleStorage.at(<proxy-address>)
并且<proxy-address>
可以在相应列的zos.local.json
中查看,我们将检查“存储库”中的内容以及是否可以增加变量:

一切正常,有很多测试合同的机会。 我可以肯定地说Zeppelin OS可以用作开发工具。
我们做了什么?
我们检查了是否可以使用Zeppelin OS部署,更新,编译和测试合同。 对于喜欢使用命令行并且Remix在浏览器中颤抖的人来说,这似乎是一个很好的工具。 另外,您可以建议针对此特定项目开始介绍Solidity和智能合约。