
Block Chain
文章平均质量分 91
区块链智库
Wang's Blog
Keep learning for the innovation era.
展开
-
区块链笔记:以太坊开发项目示例工程
简单的设计商品管理(简单示例)商品登记查询上架/下架相关智能合约的编写// 指定编译环境版本的pragma solidity >=0.4.21 <0.6.0;/** * owned 是合约的管理者*/contract owned { address public owner; // 变量账户地址 /** * 初始化构造函数 ...原创 2020-03-22 12:28:24 · 1013 阅读 · 0 评论 -
区块链笔记:DAPP的运行结构,环境准备,模板文件的选用,演示项目示例的运行
概述只有智能合约不足以构成一个应用,还需要配合前端,后端才能成为应用本身DAPP的运行结构DAPP是一个分布式应用,以下是它的简要组成结构以太坊节点 + 智能合约 + 调用端 + 界面以太坊节点 + 智能合约 是p2p网络结构的,没有明确的固定的服务端调用端和界面也就是所谓的前端,通常采用web框架结构我们需要在这个基础之上的增设一个后端服务专门用来跟节点通信,以及汇总...原创 2020-03-22 10:59:26 · 865 阅读 · 0 评论 -
区块链笔记:关于ABI和分析ABI中的字段,关于Gas,Gas消耗计算,Gas消耗表
关于ABI全称 Application Binary Interface 应用二进制接口描述智能合约调用编解码二进制信息在智能合约里,我们所能调用的是一些定义的方法,当我们在外部调用智能合约方法的时候到底传什么类型的参数,参数会有多大,返回值是什么等等这些信息,我们可以通过不同的语言来编写客户端调用这就要求,我们到底调用合约里面的具体什么方法?需要有一个二进制层面的描述,这个就叫做AB...原创 2020-03-21 13:08:05 · 1251 阅读 · 0 评论 -
区块链笔记:智能合约高级特性: 事件、接口、函数修改器
事件在编程领域里面其实是很常用的一些做法事件是以太坊的日志功能: 当发生某个动作或者某个数据的条件变化的时候,可以来触发一个动作,这个触发的动作称之为事件设置的事件会被触发: 在以太坊智能合约的编程里面,可以通过event关键字来定义一个事件,举例:event Deposit(address from, uint value);事件是没有方法体的, 使用的event关键字,有参数假...原创 2020-03-21 12:23:11 · 826 阅读 · 0 评论 -
区块链笔记:智能合约之合约继承和合约消息
合约继承之抽象函数pragma solidity ^0.4.19// 这里是一个测试合约 AbstractContractTestcontract AbstractContractTest { // 这是一个抽象方法 funciton Door() public returns (uint256);}合约中的抽象方法没有方法体可以被继承的子合约重写方法合约继承...原创 2020-03-21 11:37:38 · 813 阅读 · 0 评论 -
区块链笔记:智能合约之合约调用方式,RPC/IPC调用,常用RPC调用框架,关于web3对象,基于Nodejs示例
合约调用方式合约调用的三种方式IPC方式通常是通过控制台的方式以太网的节点在运行之后,可以打开一个控制台在控制台里面呢通过输入命令的方式,可以来调取一些智能合约的方法IPC的方式也成为管道通信主要是进程之间的一个调用方式HTTP的方式这个是比较常见的一些方式通常是使用JSON格式来做数据的序列化与反序列化也就是HTTP的JSON RPC的方式websocke...原创 2020-03-20 13:11:26 · 1622 阅读 · 0 评论 -
区块链笔记:关于Solidity的具体示例程序
智能合约示例以太坊上的智能合约是可以非常复杂的,可以实现游戏, 投票系统,众筹系统,包括实现电商等有些只是能实现,但不一定在正式环境中可以使用, 站在技术角度来看下DApp的合约实现,这里我们看下四则运算智能合约示例首先运行ganache-cli命令启动,看到创建10个地址,并且监听在8545端口下面是一个算法的智能合约具体示例pragma solidity ^0.4.1...原创 2020-03-19 12:31:13 · 401 阅读 · 0 评论 -
区块链笔记:Solidity语言之程序示例、程序结构、数据类型、表达式以及控制结构、异常处理
Solidity程序示例// 指定编译版本pragma solidity ^0.4.21;// 指定contract名字contract MyContract { // 定义合约中的变量 uint256 totalQty; enum Colors (WHITE, BLACK, RED, GREEN, PINK) uint[5] eachLine=[1,2,...原创 2020-03-19 10:33:28 · 317 阅读 · 0 评论 -
区块链笔记:truffle、ganache-cli框架工具的安装开发环境的搭建以及合约的编写,编译和部署
TruffleTruffle是以太坊智能合约的开发工具通过这个工具可以对我们的智能合约来进行编译,测试,以及部署,相当于一个自动化的一个东西Truffle本身使用nodejs来开发的,并且是开源的官方地址 https://www.trufflesuite.com/truffle中文文档:https://truffle.tryblockchain.org/通过Truffle可以对...原创 2020-03-19 09:39:09 · 1216 阅读 · 4 评论 -
区块链笔记:EVM的作用,EVM与字节码,EVM与共识验证,EVM的执行结构
EVM的作用EVM: Ethereum Virtual Machine 以太坊虚拟机在以太坊上如果我们要转账, 部署智能合约, 调用智能合约都是EVM来执行EVM是在以太坊上的作用是以太坊节点的功能引擎执行以太坊交易事务部署、执行智能合约每一个节点都有独立的EVM每个节点都有一个自己的EVM每一个节点都会一致的执行同样的事务把智能程序部署这个动作广播到其他的节点其他节点...原创 2020-03-19 08:25:14 · 3710 阅读 · 1 评论 -
区块链笔记:智能合约之结构,存储,执行,特点
智能合约的结构// 指定编译版本pragma solidity ^0.4.21;// 指定contract名字contract MyBank { // 定义合约中的变量 mapping(address => uint256) public balanceOf; function MyBank(uint256 initAmount) public { ...原创 2020-03-18 17:51:50 · 1204 阅读 · 0 评论 -
区块链笔记:存在的问题:51%攻击、性能问题、区块容量爆炸、网络层攻击、私钥丢失、脚本安全性
51% 攻击是指在区块网络中的打包权被优势节点连续获得比如说比特币,某个矿工节点有很强的算力, 使得在一段时间之内,每一次打包全都是被它抢到当发生这种情况的时候,具备很强算力的节点就可以发动51%攻击了所谓51%攻击是指它能达到的算力,能达到全网的51%这里51%一只是一种称呼,并不是说一定要正好达到51%的算力实际上即便是达到10%,20%的算力,有时候也足以来对这个网络发...原创 2020-03-17 12:01:39 · 1782 阅读 · 0 评论 -
区块链笔记:典型应用:数据资产、交易系统、即时通信、链上游戏、追踪溯源等
数据资产1 ) 详解这是区块链的一个比较核心的应用,对于软件系统或者说对于互联网系统来讲,对数据的处理、分析、计算,这些功能是属于比较基本的软件功能对于区块链来讲它的核心的功能是在于创新式的提供了一个原先各种软件都没有能够实现的功能,那就是数据资产什么叫数据资产?顾名思义就叫数据的资产化,或者说某种具备资产性质的数据 上图中间代表一个区块链网络,在这个网络的四周可以看到...原创 2020-03-15 18:05:34 · 1591 阅读 · 0 评论 -
区块链笔记:区块链网络类型的分类(按不同方式划分):网络范围,部署方式,层次结构,应用范围
网络类型区块链它是一个p2p网络结构的网络系统在实际的部署过程当中,它还可以有哪些具体的分类呢?1 ) 按网络范围简单的说可以分成公有链,联盟链,私有链,当然这三个范围的划分的其实也并不是一个特别严格的一个定义一、公有链的主要是指部署在互联网范围之内,没有特别的一个权限的一个设置,也没有其他的一些什么登陆上的一些条件比如比特币,以太坊,任何人都可以直接下载节点来使用任何人也可...原创 2020-03-14 13:29:36 · 10353 阅读 · 0 评论 -
区块链笔记:系统架构、客户端组成、网络拓扑结构、共识原理、脚本系统原理
系统架构 在这里大概列举了一下,对于一个区块链系统可能包含的多种模块这些是一个区块的基础系统的一个架构组成它包含这些核心节点,核心节点里面,就是一些基础技术栈,或者说是核心技术栈的一些实现账户、网络、账本存储、校验、脚本系统、智能合约这些实现以及可能进行的分布式计算,因为我们在某些场景之下,有可能在p2p的这种系统环境中,在这个节点上,去实现一些分布式计算在核心节点里面...原创 2020-03-13 21:57:30 · 3725 阅读 · 0 评论 -
区块链笔记:技术栈、对等网络、密码技术、账户模型、网络共识、脚本系统、扩展技术
技术栈从比较技术化的一个角度来对区块链进行一个阐述从技术站的组成来来阐述一下区块链,作为一种软件系统的开发人员或者说是技术爱好者,更希望从技术的角度来进行一个理解,到底它包含哪些技术模块?又分别产生哪些作用?我们在开发区块链底层系统的时候,会涉及哪些方面呢?核心技术:所有的区块链底层系统或者说是基础系统,基本上都包含这6大主要模块:共识算法,密码算法,脚本系统,账户模型,区块链账本以及网...原创 2020-03-12 17:54:45 · 1352 阅读 · 0 评论 -
区块链笔记:比特币之主链、节点网络、交易事务数据结构、UTXO、区块内容、挖矿原理、最终一致性、SPV
比特币主链我们将站在比特币的角度来对区块链来进行一个更加具体的说明区块链它只是一类技术的一个总称,而比特币是使用区块链技术开发出来的第1个典型的应用因此我们对区块链技术的了解从比特币开始是一条必经之道首先我们来看,何为比特币主链?比特币首先是一个区块链的网络系统,那么什么叫主链呢?也就是它主要的一个链,相当于是我们软件的一个正式版或者说是生产环境的系统因为区块在形成链的过程当中,并...原创 2020-03-12 16:07:23 · 2001 阅读 · 1 评论 -
区块链笔记:特定数据结构之区块头、区块体、梅克尔树、账户地址
区块链的特定数据结构概述以比特币为例对于区块链来讲,首先它的数据是一个一个的区块,区块由区块头和区块体组成区块头里有很多摘要信息:前一个区块的哈希值, 梅克尔根等等区块体包含很多的事务数据(交易事务)区块之间是由前序和后序之间环环相扣的一个链接所有的区块链系统不管是用的什么不一样的密码算法、共识机制、脚本系统等, 它在区块链这样一个存储结构上是完全一致的。梅克尔树 ...原创 2020-03-11 16:47:36 · 5857 阅读 · 0 评论 -
区块链笔记:区块链概念、相关对比、技术特点、CAP定理、FLP定理、价值网络
什么是区块链对于区块链这个技术名词出现在很多文章里面,有很多解释。站在技术角度来说,它是指一种数据的记录格式,任何系统都要记录数据,区块链对于其他的数据库或者工具有什么不一样的地方呢?记录数据的方式:它把持续不断产生的数据分成一个个的区块(data block),每一个区块之间通过哈希值将前后的区块进行链接。每一个区块:由区块头和区块体组成,区块头包含摘要信息,如区块哈希、梅克尔根、...原创 2020-03-11 12:04:25 · 2866 阅读 · 0 评论