Tendermint

使用修饰符让Solidity开发以太坊智能合约有更好的可读性

给你一囗甜甜゛ 提交于 2019-12-02 04:21:32
修饰符是可以应用于其他函数的一个函数。在调用函数之前,确保满足某些先决条件非常有用。我们举一个简单的例子,在我们已经写过的合约中,我们经常要检查函数的调用者是否是合约的所有者: function increment() public { if (owner == msg.sender) { // We check who calls the function count = count + 1; } } 想象一下,如果我们的智能合约有多个只能由所有者调用的函数,那么如果 owner == msg.sender 部分需要重构那么怎么做?这是修饰语将帮助我们的地方。让我们看第一个修饰符: modifier isAdmin() { require(msg.sender == owner); _; } function increment() public isAdmin { count = count + 1; } 我们的修饰符看起来像一个函数。 require() 函数评估条件,如果不满足条件将抛出异常,这将停止执行我们的智能合约。 _ 关键字告诉编译器用函数体替换 _ 。 与函数一样,修饰符可以接受参数。假设我们可以拥有多个用户,并希望检查所有权,看下面的代码: modifier onlyBy(address _account) { require(msg.sender ==

基于区块链的开放金融DeFi详解

老子叫甜甜 提交于 2019-12-01 01:19:54
DeFi( De centralized Fi nance),即去中心化金融,是2019年区块链应用发展 最迅猛的一个领域。在以太坊区块链上那些最成功的DApp,例如MakerDAO/DAI、Compound、0x 以及下面我们要介绍的那些,其目标都是颠覆传统的金融服务系统,促进一个全新的数字 经济时代的到来,让每个人都可以获得极大的经济自由度。本文将介绍DeFi的作用、 优势、演化历史、dApp架构等有关DeFi的重要概念,可以帮助你快速了解2019年区块链 的热门概念: DeFi 。 1、为什么需要DeFi 不管当下的金融服务设施如何重要,它还是受到很多问题的困扰。这些问题的主要根源都在于中心化的、 单体机构的存在,这使得所有在传统金融体系中发生的交易都处于第三方的监管之下。 这使得个体的经济自由在某种程度上被剥夺,DeFi就是为了让每个普通人都能够获得自治 而平等的金融服务。 传统金融体系目前存在着以下的弊端: 区别对待的金融服务 不必要的监管与审查 收到对手方风险(counterparty risk)的困扰 缺乏必要的透明度 上述弊端的存在导致了以下后果: 使用传统金融设施需要支付高昂的手续费 由于地理边界而导致的资产缺乏、官僚注意及监管审查问题,使得们无法多样化其投资组合导致错失机会 个人承担过高不必要的交易对手方风险 正是借助于区块链技术的发展

Swift编写的EOS区块链开源框架SwiftyEOS

妖精的绣舞 提交于 2019-11-30 23:15:53
SwiftyEOS是一个用于与EOS交互的开源框架,用Swift编写。可以在iOS和macOS上使用。 特点: EOS密钥对生成 私钥导入 签名哈希 基本的RPC API(链/历史)可查询客户端 交易(EOS token 转账) 帮助类处理iOS上的脱机钱包 在iOS上加密/解密导入私钥 如何使用它 1.将 Libraries 和 Sources 文件夹复制到项目中,不需要 main.swift 。 2.如果不是针对iOS平台,请删除 Sources/Utils/iOS 。 3.将 Libraries/include 添加到Header搜索路径中。 4.将 Libraries/include/Bridging-Header.h 设置为Objective-C Bridging Header。如果你有自己的bridging header,请复制该文件中的所有导入内容并粘贴到你自己的文件中。 5.编译然后等结果 密钥对生成 SwiftyEOS现在支持secp256k1密钥对。 secp256r1密钥对生成有bug但我无法弄清楚原因。从 cleos 创建的单元测试创建密钥 --r1 不会通过。你可能不会将secp256r1视为一个选项,因为 cleos wallet 命令也无法导入这些键。 生成随机密钥对: let (pk, pub) = generateRandomKeyPair

共识算法比较Tendermint的BFT与EOS的dPoS

江枫思渺然 提交于 2019-11-30 23:15:06
这项技术深入研究由Chjango Unchained编写。本文比较了不同的共识系统,它们为EOS和Tendermint提供了关于每种基础技术以及它们有什么样的独特地类似证明(PoS)能力。 在由单个组织运行的传统分布式系统中,信任和安全由防火墙,信息安全团队和硬件安全来提供,以确保恶意行为者不会破坏分布式数据库的一致性。 区块链系统需要一种不同的架构,其中信任机制在许多组织之间分配,但我们必须容忍系统中的对抗角色。区块链系统的设计是安全模型,博弈论,计算机科学和机构声誉之间的权衡。 比特币的Nakamoto共识放弃了传统的分布式系统对传统拜占庭容错(BFT)设计中终结性的保证,以换取开放式的准入安全模型。这需要成本。如果恶意行为者可以控制50.1%的hashpower,系统根本不提供任何保证。在25%时,游戏理论机制中由于自私的挖掘而开始不稳定,并且概率收敛变得不稳定。这些攻击中的每一个都从根本上改变了轻客户端证明所需的假设,这些假设使得区块链方法在互联网上能够扩散。 Cosmos和EOS是进一步权衡的研究。Cosmos依靠对正式拜占庭容错的严格保证,以建立对模棱两可的强有力的惩罚,并建立一系列保证,扩展到整个区块链的互联网。EOS在很大程度上依赖于机构声誉,以达到中本共识与计算机科学研究表明的可能共识之间的形式共识。让我们仔细来看看。 Tendermint

Python查询比特币实时价格

百般思念 提交于 2019-11-30 05:18:50
在本文中我们将学习如何使用使用coinmarketcap提供的比特币行情API,编写Python程序来获取像比特币、莱特币或以太币之类的区块链数字货币的实时行情/实时价格。 1、比特币行情API调用代码 我喜欢在编写实现逻辑之前先写一个注释来说明程序的用途: # 说明:获取比特币的实时价格 接下来我会导入requests库: # 导入requests库 import requests 现在让我们保存比特币行情API的URL,我们可以使用coinmarketcap.com提供的API: TICKER_API_URL = 'https://api.coinmarketcap.com/v1/ticker/' 现在让我们创建一个函数来获取指定数字货币例如比特币、莱特币或以太坊的价格 def get_latest_crypto_price(crypto): response = requests.get(TICKER_API_URL+crypto) response_json = response.json() return float(response_json[0]['price_usd']) 调用这个函数测试一下: get_latest_crypto_price('bitcoin') 测试结果如下: 现在我们创建一个主函数来获取指定数字货币的当前价格,然后显示输出: def main(

Omni/USDT PHP开发包简介

 ̄綄美尐妖づ 提交于 2019-11-29 18:53:49
OmniTool开发包适用于为PHP应用快速增加对Omni Layer/USDT数字资产的支持能力,即支持使用自有Omni Layer节点的应用场景,也支持基于第三方API服务和离线裸交易的轻量级部署场景。下载地址: omni/usdt php开发包 。 1、OmniTool开发包简介 OmniTool开发包主要包含以下特性: 完善的Omni Layer节点RPC封装 支持利用自有节点或第三方服务获取指定地址的utxo集合 支持离线生成omni代币转账裸交易 支持利用自有节点或第三方服务广播裸交易 OmniTool支持本地部署的Omnicored节点,也支持blockchain.info、btc.com等提供的开放API,要增加对其他第三方服务的支持也非常简单,只需要参考代码实现如下接口: UtxoCollectorInterface:utxo收集器 UtxoSelectorInterface:utxo筛选器 BroadcasterInterface:裸交易广播器 ExplorerInterface:数据查询接口 OmniTool软件包运行在**Php 7.1+**环境下,当前版本1.0.0,主要类/接口及关系如下图所示: OmniTool的主要代码文件清单如下: 代码文件 说明 omni.php/src/RpcClient.php Omni Layer的RPC协议封装类 omni

以太坊、EOS、Hyperledger、Cosmos和Cardano等区块链的比较

泄露秘密 提交于 2019-11-29 18:34:18
不同的区块链智能合约和区块链技术现在风靡一时。越来越多的人出于某种原因试图进入这个神奇的世界。如果你是这项技术的新手并正在寻找基于区块链的开发平台的快速入门,那么本指南非常适合你。我们将重点关注和比较的平台是: Ethereum EOS Hyperledger Cosmos Cardano 那么,为什么我们决定关注这5个平台?我们认为这几个平台提供了可用性和功能性的组合。是的,我们也知道其中一些项目并未完全上线,但我们仍然认为项目的潜力足以保证我们的名单上有它一个位置。我们将先介绍每个平台,然后在最后比较它们。 以太坊 毫无疑问,以太坊是智能合约平台的老大。以太坊背后的主要人物是Vitalik Buterin。Buterin对比特币非常着迷,但他意识到区块链技术比仅仅作为支付协议的推动者有更多的用途。他意识到可以使用区块链技术来创建去中心化的应用程序。于是他被启发创造了以太坊。 像比特币一样,以太坊是一种加密货币,然而,也就是这个地方还有些相似性。因为虽然比特币是“第一代”区块链,但以太坊通过成为有史以来第一个第二代区块链打破了局面。以太坊通过在区块链上引入智能合约,彻底改变了加密世界。 智能合约首先由Nick Szabo概念化。这个想法很简单,在双方之间有一套自动执行指令,不需要由第三方监督或执行。这个想法似乎很简单,对吧?然而,智能合约使以太坊能够创建一个环境

EOS Chain/Wallet RPC API的PHP开发包

夙愿已清 提交于 2019-11-29 18:34:01
介绍一个EOS Chain/Wallet RPC API的PHP开发包。 开始 你可以查看EOS的 RPC API参考 ,但要注意缺少一些较新的方法。Wallet RPC API实现 EOS v1.1.0 of RPC API reference 。此外,这些文档中的一些示例也使用了过时的语法。 安装 composer require manamine/php-eos-rpc-sdk 配置 使用你最喜欢的RPC API主机和KEOSD在项目根目录中创建一个 dotenv.env 文件。你可以使用 env.example 作为模板: cp .env.example .env 有一个漂亮的工厂方法来自动化实例所有依赖项: $api = (new ChainFactory)->api(); $walapi = (new WalletFactory)->api(); $eos = (new EosRpc($api, $walapi)); 示例 为了帮助你入门,运行一个简单的示例,它涵盖了所有API命令。 只需通过cli运行此命令即可查看所有命令的示例输出: cd examples php chain.php php wallet.php php eosrpc.php API方法 涵盖了几乎所有区块链和钱包API方法。 区块链API Get Info 获取与节点相关的最新信息 echo

EOS智能合约安全开发终极指南

若如初见. 提交于 2019-11-29 18:32:57
EOS智能合约安全终极指南。当世界上最大的ICO,EOS于2018年6月推出时,加密社区变得持怀疑态度,并且由于软件错误而被冻结了2天。但快进4个月,EOS今天占了以太网今天所做交易的两倍以上。通过免费和更快速交易的承诺,EOS最顶级的Dapp拥有大约13,000个每日活跃用户,而以太网的最顶级Dapp只有2,000个。 一些常见的智能合约漏洞几乎适用于所有平台。与以太坊一样,在EOS上编写的智能合约需要在主网上上线之前进行审核。合约中的致命错误可以在合约没有经过足够的测试时被利用。在本指南中,我们将帮助你避免在EOS上制作下一个杀手dApp的过程中常见的陷阱。 在阅读本指南之前,了解有关EOS开发的一些先决条件信息非常重要,这些信息在你阅读本指南时会很方便。了解C++是必须的。开始智能合约开发的最佳位置是EOSIO自己的文档。 ABI调用处理 extern "C" { void apply(uint64_t receiver, uint64_t code, uint64_t action) { class_name thiscontract(receiver); if ((code == N(eosio.token)) && (action == N(transfer))) { execute_action(&thiscontract, &class_name::transfer

开发应用专用的Substrate区块链!

六月ゝ 毕业季﹏ 提交于 2019-11-29 08:26:59
Substrate是开发 应用特定区块链 (Application Specific Blockchain )的快速开发框架。与基于以太坊等公链开发的DApp相比,应用特定区块链是围绕单一应用特别构建的专用区块链,因此具有最大的灵活性和最少的限制。本文将详细介绍如何使用Substrate框架快速实现一个简单的游戏应用专用区块链。 本文将按以下顺序完成这个简单的游戏专用区块链的教程: 下载安装substrate 配置全新的substrate-node-template和 substrate-ui 开发用于游戏区块链的新的运行时 使用substrate-ui实时无分叉升级运行时 升级substrate-ui展示新的运行时的特性与功能 如果希望快速掌握区块链应用的开发,推荐汇智网的 区块链应用开发系列教程 , 内容涵盖比特币、以太坊、eos、超级账本fabric和tendermint等多种区块链, 以及 java、c#、go、nodejs、python、php、dart等多种开发语言 前序环节 在开始本教程之前,首先在计算机中安装以下软件: node和npm substrate 接下来还需要克隆这两个软件仓库并进行相应的配置: Substrate Node Template Substrate UI STEP 1:启动区块链 如果安装没有问题,现在可以启动一个substrate开发链了