区块链
super_lixiang
这个作者很懒,什么都没留下…
展开
-
超级账本hyperledger fabric第十四集:外部服务SDK
外部服务分析:如何提供外部服务 企业内部各种数据接口,rpc grpc 网站(web),手机(app),通过http(案例中使用的) 智能硬件,socket服务 SDK提供外部服务,SDK的语言选择 node.js(官方推荐,效率9颗星) java(实际使用量最大的9颗星) python(使用不太多 3颗星) golang(不稳定,常用方法也没有 1颗星) ...原创 2018-11-12 20:35:16 · 1751 阅读 · 18 评论 -
以太坊源码之『RLP』
RLP源码解析一:概念:RLP(Recursive Length Prefix--递归长度前缀):是一个编码算法二:功能:主要用于编码任意嵌套结构的二进制数据。是以太坊中序列和反序列化的主要方法,所有的区块、交易等数据结构都会经过RLP编码之后再存储到区块数据库中三:数据处理特性:RLP处理两类数据字符串(一串二进制数据) 列表(不单是一个列表,可以是一个嵌套递归的结构,里面...原创 2018-10-29 19:07:58 · 702 阅读 · 0 评论 -
聊聊IPFS
一.概念:IPFS是一个点对点的分布式超媒体分发协议,愿景是取代HTTP成为新一代协议二.IPFS工作原理:IPNS(去中心化的命名系统),每个文件都可以被命名为易读的名字。通过搜索名字来找到文件。(思考:命名系统原理) 查找文件时,通过文件的哈希在网络中查找存储该文件的节点,再找到想要的文件 IPFS网络节点只存储感兴趣的内容及相关索引信息 IPFS通过网络删除具有相同哈...原创 2018-10-23 21:47:36 · 747 阅读 · 1 评论 -
Openzeppelin库第八期:Crowdsale
Crowdsale.sol:众筹合约pragma solidity ^0.4.24;import "../token/ERC20/ERC20.sol";import "../math/SafeMath.sol";import "../token/ERC20/SafeERC20.sol";/** * @title Crowdsale * @dev Crowdsale is a ...原创 2018-10-21 15:29:50 · 452 阅读 · 0 评论 -
Openzeppelin库第七期:TOKEN
一:ERC20以太坊TOKEN的标准接口 作用:为了让以太坊上的各类token合约有一个特征与接口的共同标准ERC20.sol:ERC20合约的扩展pragma solidity ^0.4.24;import "./ERC20Basic.sol";/** * @title ERC20 interface * @dev see https://github.com/ethe...原创 2018-10-21 15:25:43 · 805 阅读 · 0 评论 -
Openzeppelin库第六期:Proposals
TokenMetaData.sol:对ERC-URI的设置pragma solidity ^0.4.21;import "../../token/ERC20/ERC20.sol";/** * @title ERC-1047 Token Metadata * @dev See https://eips.ethereum.org/EIPS/eip-1046 * @dev token...原创 2018-10-21 15:10:36 · 136 阅读 · 0 评论 -
Openzeppelin库第五期:introspection
ERC165.sol:通过指定接口ID查询接口pragma solidity ^0.4.24;/** * @title ERC165 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md */interface ERC165 { /** * @notice Query if a cont...原创 2018-10-21 15:08:44 · 248 阅读 · 0 评论 -
Openzeppelin库第四期:Access详解
signatureBouncer.sol: 签名保护合约,只有指定的角色才能进行签名 whitelist.sol:白名单signatureBouncer.sol:pragma solidity ^0.4.24;import "../ownership/Ownable.sol";import "../access/rbac/RBAC.sol";import "../ECRecove...原创 2018-10-21 15:06:56 · 482 阅读 · 0 评论 -
Openzeppelin库第三期:OwnerShip详解
RbacRoles.sol:角色管理 RBAC.sol:角色扩展pragma solidity ^0.4.24;import "./Roles.sol";/** * @title RBAC (Role-Based Access Control) * @author Matt Condon (@Shrugs) * @dev Stores and provides setter...原创 2018-10-21 15:03:56 · 1217 阅读 · 0 评论 -
Openzeppelin库第二期:Math库详解
SafeMath.sol: 安全运算 Math.sol: uint256与uint64的最值获取math.sol:pragma solidity ^0.4.24;/** * @title Math * @dev Assorted math operations */library Math { // 取最大值 function max64(uint64 _a...原创 2018-10-21 14:53:11 · 1308 阅读 · 0 评论 -
Openzeppelin库第一期:概念及用法
一. 概念:一个帮助我们在以太坊上建立安全智能合约的开发库,当前集成于truffle开发框架中。二. 用法安装truffle init npm init npm install openzeppelin-solidity 使用:import “openzeppelin-solidity/contract/access/rbac/Roles.sol” 模块总述...原创 2018-10-21 13:30:44 · 3746 阅读 · 0 评论 -
以太坊源码之『数据持久化』
目录结构database.go:封装了对levelDB的操作代码 interface.go:数据库接口 memory_database.go:提供一个测试使用的内存数据库 database_test.go:测试安全levelDB:google开发开源k-v存储数据库 源码:https://github.com/syndtr/goleveldb 特点:leveldb是一个持久化...原创 2018-10-29 20:28:25 · 483 阅读 · 0 评论 -
以太坊源码之『geth命令操作』
概念:geth是go-ethereum中最主要的一个命令行工具,也是各种网络的接入点,支持全节点和轻节点模式,其它程序也可以通过暴露的JSON RPC接口调用访问以太访网络。主要引用第三方的cli包实现源码地址:https://gopkg.in/urfave/cli.v1 概念:一个基于go开发的用于在go里面构建命令行的应用程序geth启动流程分析通过init做一个geth整...原创 2018-10-29 20:59:55 · 652 阅读 · 0 评论 -
超级账本hyperledger fabric第十三集:hyperledger fabric终极案例
一.fabric开发流程:让什么数据上链:所有节点备份数据耗费空间,视频等不要上链 如何交互:-c “Args”[“方法名”,参数] 编写合约 Init Invoke 拖到linux运行,基于配置好的网络去部署运行(安装和实例化) 合约交互 SDK调用(页面点击或输入信息)二.需求分析:1.开发转让资产2.功能用户开户和销户 资产登记,资产上链,与具体的用户...原创 2018-11-12 19:16:24 · 1024 阅读 · 0 评论 -
超级账本hyperledger fabric第二集:入门配置搭建
二.hyperledger fabric 入门需要的环境:docker docker-compose go JDK npm和node.js下载fabric组件的docker镜像:hyperledger的docker商店地址:https://store.docker.com/profiles/hyperledger需要下载如下镜像(除了baseos 0.3.1 ,其他都...原创 2018-11-05 19:19:11 · 772 阅读 · 0 评论 -
超级账本hyperledger fabric第一集:概念
一.hyperledger fabric 概念:1. 什么是 hyperledger? 超级账本是 Linux 基金会在 2015 年发起的“开放式账本”开源项目,“开放式账 本”是为推进区块链技术应用于金融领域及交易验证方向的发展而发起的,“开放 式账本”随后被更名为“超级账本” 其加入成员包括:荷兰银行(ABN AMRO)、埃森哲(Accenture)等十几个不同 利益体,...原创 2018-11-05 19:04:25 · 1263 阅读 · 0 评论 -
超级账本hyperledger fabric第四集:系统架构
一.架构图应用层:API:提供了GRPC,RPC框架 SDK:在API基础上封装的SDK,go、java、python、nodejs 事件:分布式系统中,达成共识需要一定时间,fabric使用异步通信模式开发,触发回调函数执行 身份:依托于底层的成员服务,是联盟链的认证功能,例如CA 账本:区块链的查询数据,是账本中查出来的,区块高度+交易ID,不重复 交易: 对区块链数据进...原创 2018-11-07 14:42:09 · 1260 阅读 · 0 评论 -
第八集:Docker之网络namespace
一.网络分类单机◼ Bridge Network ◼ Host Network ◼ None Network多机◼ OverlayNetwork 二.网络基础三.Linux网络命名空间namespace运行2个容器查看2个机器的网络 在test2上ping下test1的namespace发现一个情况,可以ping通坑:若ping不通,则...原创 2018-11-02 16:21:30 · 623 阅读 · 0 评论 -
第七集:Docker之Dockerfile案例-快速搭建stress
方式1:运行ubuntu直接安装stress使用256内存,debug输出指定超出容器内存的任务方式2:编写Dockerfile构建在本机与容器交互运行遇到这种情况 开一个新的终端 docker stop xxxxx...原创 2018-11-02 13:39:46 · 379 阅读 · 0 评论 -
第三集:Docker的容器container
构建在image之上的,image(镜像)是只读的,container是可读写的,就像类与对象的关系查询本地正在运行的container(容器)查询所有的container运行没有的image,会自动下载 docker run xxxxx 进行交互运行容器 查看docker container正在运行的是一个,所有的是2个,打开一个新的终端删除容器简写:...原创 2018-11-01 21:14:42 · 286 阅读 · 0 评论 -
第二集:Docker的镜像image
docker的底层技术实现架构:docker engine:整体架构:底层技术支持:namespace:做隔离,pid,net,可以启动多个容器 control groups:做资源限制,比如对内存,对CPU做限制 union file system:镜像的分层docker image概述:当运行容器时,使用的镜像如果在本地中不存在,docker 就...原创 2018-11-01 20:34:46 · 232 阅读 · 0 评论 -
第一集:Docker的配置搭建
容器、docker概念:部署演变物理机/KVM缺点 部署慢 成本高 资源浪费,CPU内存用不完 很难迁移 虚拟化的优点 资源得到了合理分配 容易扩展 很容易云化 容器是实现DevOps的解决方案docker优点: 1、简化程序: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便...原创 2018-11-01 19:04:16 · 669 阅读 · 0 评论 -
Openzeppelin库第十一期:再叙ERC20发币
编写ERC20合约 通过remix进行部署 连接到MetaMask上面 通过myetherwallet.com进行转账测试等操作新建1-ERC20文件夹,打开终端,truffle init ,pragma solidity ^0.4.0;library SafeMath { /** * @dev Multiplies two numbers, throws o...原创 2018-10-25 16:27:03 · 653 阅读 · 0 评论 -
Openzeppelin库第十期:Lifecycle
Payment:用于支付管理conditionEscrow.sol:抽象合约,增加条件限制 escrow.sol:支付管理 pullPayment.sol:通过拉取模式进行支付 refundEscrow.sol:退款相关操作 splitEscrow.sol:多个收款人的比例管理…Lifecycle:合约生命周期Destructible.sol:合约销毁管理 Pausabl...原创 2018-10-25 15:39:58 · 211 阅读 · 0 评论 -
Openzeppelin库第九期:支付模式Push与Pull
支付的模式推送(push):合约主动维护 拉取(pull):用户主动调用 实例:简单竞标说明 只有一个功能:在竞标过程中,当有更高的价格产生时,对出价最高竞标者的信息进行更新,合约把之前那一个的竞价退回去。pragma solidity ^0.4.18;// 竞标合约实例// 1. 推送模式的支付contract PushPayment{ // 出价最高的人 ...原创 2018-10-25 15:37:44 · 531 阅读 · 0 评论 -
区块链基础
区块链基础一.区块链的产生密码朋克:通过匿名性来保护隐私安全 不可篡改的文件记录:利用时间戳加盖到文件内容中,证实数据的真实存在性与不可篡改性 初代加密货币:现有区块链加密货币的前身二.区块链发展历史2009 比特币的创世区块产生。1.0 2014年左右 以太坊诞生。2.0 2018年中期...原创 2018-09-26 19:32:40 · 1314 阅读 · 0 评论 -
redis→分布式缓存
简介 1. redis 是什么? REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用 C 语言编写的,遵守 BSD 协议,是一个高性能的 (key/value)分布式内存数据库,基于内存运行并支持持久化的 NoSQL 数据库, 是当前最热门的 NoSql 数据库之一,也被人们称为数据结构服务器。 能满足对海量数据的读写 redis 的键只能...原创 2018-09-14 20:14:10 · 2291 阅读 · 0 评论 -
lvs+keepAlived→效率最高的负载均衡
一、 简介 1. 负载均衡的类型 负载均衡可以采用硬件设备(例如常常听见的 F5),也可以采用软件负载 商用硬件负载设备成本通常较高(一台几十万甚至上百万),所以一般 情况下会采用软件负载 软件负载解决的两个核心问题是:选谁、转发,其中最著名的是 lvs 2. lvs 是什么? 英文全称是 Linux Virtual Server,即 Linux 虚拟服务器 由 章 文 嵩 博...原创 2018-09-14 19:47:07 · 32919 阅读 · 11 评论 -
kafka→分布式消息队列
一、 kafka 简介 1.消息队列 Message Queue 消息传送系统提供传送服务。消息传送依赖于大量支持 组件,这些组件负责处理连接服务、消息的路由和传送、持久性、安全 性以及日志记录。消息服务器可以使用一个或多个代理实例 可以将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰 期的并发事务,改善网站系统的性能 合理地使用消息队列,可以有效地抵御促销活动刚开始就开始大...原创 2018-09-14 19:29:51 · 677 阅读 · 0 评论 -
GO-面向对象2-继承
继承性概述继承的意义在于低成本地扩展和改造原有代码 首先,子类一行代码即可拥有父类的全部成员(属性和方法) 继承的目的,在于扩展和改造父类 扩展,是指子类发展出自己独有的新属性和新方法,以适应自身需求 改造,是指子类覆写和覆盖父类成员(属性和方法),以适应自身需求定义父类//定义父类type Doggy struct { name string sex bo...转载 2018-09-11 08:43:51 · 154 阅读 · 0 评论 -
Linux下搭建Go语言开发环境
@安装编译器 方案一 下载安装包 解压到特定目录cd /usr/localtar -zxvf goxxx.tar.gz 配置PATHexport PATH=$PATH:/usr/local/go/bin使配置永久生效sudo gedit /etc/profileexport PATH=$PATH:/usr/local/go/binsource /etc/prof...原创 2018-09-18 08:51:24 · 2206 阅读 · 0 评论 -
共识算法-PoW
Proof-of-Work 简称 PoW,即为工作量证明 通过计算一个数值,使得拼揍上交易数据后内容的值满足规定的上限,在节点成功 找到满足的 Hash 值之后,会马上对全网进行广播打包区块,网络的节点收到广播 打包区块,会立刻对其进行验证 网络中只有最快解密的区块,才会添加的账本中,其他的节点进行复制,这样就保 证了整个账本的唯一性 假如节点有任何的作弊行为,都会导致网络的节点验证不通过,...原创 2018-09-17 19:27:25 · 897 阅读 · 0 评论 -
Zookeeper搭建及介绍
Zk环境安装单机版(1)创建如下目录,将tar包上传并解压(2)进入解压后的zk,创建data目录(3)复制配置文件并重命名如下,然后修改配置(4)修改配置文件中的dataDir为自己创建的数据目录(5)在zookeeper的bin目录,启动zk(6)停止zk:start改stop,看状态:start改status伪分布版(1)将上面的单机版...原创 2018-09-12 19:27:02 · 158 阅读 · 0 评论 -
Solidity开发测试环境搭建
Solidity基础1.概念:一种智能合约的高级语言,用于编写以太坊智能合约。运行在EVM上面2.语法类似js,是一种面向对象的语言.3.和传统语言的区别Address类型:由于以太坊的底层是基于账户的,所以拥有address类型,主要作用是定位合约,账户,合约代码等 Payable关键字:通过payable可以让以太坊在语言层面上支持支付 可见性:除去传统语言所支持的publ...原创 2018-10-14 18:41:30 · 4589 阅读 · 1 评论 -
第四集:Solidity的库
库关键字:library 在solidity中,库也是一种合约,没有存储,不存储以太币 没payable,也没有fallbace函数 库可以部署,但不能够直接访问其中的函数 通常用于公共功能,类似于golang的package using for *(附着库)声明方式: using A for B:将A中定义的所有函数都附着在任意类形B上面,类型B的实例可以调用A中所有的方法...原创 2018-10-18 15:42:25 · 438 阅读 · 0 评论 -
解析宠物商店pet_shop
Truffle unbox 实例实现1.Pet-shop实现2.下载pet-shop unbox:truffle unbox pet-shop然后直接运行:npm run dev然后自动弹出宠物网页:http://localhost:3000/3.Bootstrap:前端开发框架4.步骤打开ganache 设置metamask网络为私有Privat...原创 2018-10-20 20:12:30 · 1054 阅读 · 0 评论 -
第三集:Solidity面向对象
面向对象:OO编程,针对面向过程而言的。 特点:封装、继承、多态继承:在solidity中,继承就是合约与合约之间一种特殊的传递关系。 通过”is”关键字实现继承。子合约(派生合约)可以访问父合约中所有非private的状态变量与函数。 继承支持参数传递 支持多重继承:在solidity中,支持多重继承,但是多重继承中有重名合约。多个继承之间用逗号隔开,如果一个合约继承了多个其它...原创 2018-10-17 16:59:38 · 645 阅读 · 0 评论 -
第二集:Solidity函数讲解
函数基础1.Solidity本身也是一门函数编程语言,也就是说函数可以做参数、变量、返回值。函数属于值类型,支持多返回值。2.调用方式内部调用内部调用采用EVM跳转调用,所以能够直接使用上下文中的数据,因为不用拷贝数据,所以在数据传递的时候非常高效 对合约内的函数,引入的库函数和从父合约中继承的函数都可以进行内部调用外部调用采用外部交易调用,使用external。对于一个外...原创 2018-10-17 13:15:39 · 1673 阅读 · 0 评论 -
truffle
truffle开发框架1.作用:为以太坊提供开发环境,测试框架等,使得以太坊开发测试更加方便。2.功能内置智能合约的编译、链接、部署等管理 可脚本化,可以扩展部署,迁移框架 网络管理,可以部署到任意的公共网络、私有网络 使用npm,ethpm进行包管理 用于直接与合约通信的交互式的控制台 可以在truffle环境中运行外部脚本 提供合约抽象接口,可以通过类似于var ins...原创 2018-10-19 21:46:02 · 1657 阅读 · 1 评论 -
web3.js
概念:与以太坊进行合约交互的javascript api 作用:以太坊节点只能识别一种叫做JSON-RPC的语言,但JSON-RPC写起来很麻烦,并且容易出错。通过web3.js进行封装,只需要与javascript进行交互。 英文文档: https://web3js.readthedocs.io/en/1.0/ 中文文档:http://web3.tryblockchain.org/Web3...原创 2018-10-19 20:11:34 · 230 阅读 · 0 评论