搬砖的乔布梭
这个作者很懒,什么都没留下…
展开
-
漫谈Go语言与区块链
Go语言优势高并发:百万级并发能力,令所有其它语言黯然失色;简洁:语法简洁媲美Python,学习成本低,开发速度快;高效:执行效率媲美C++;底层语言:意味着C能做的事情Go都可以做;博采众长:简化的C语言指针 + Java的内存管理/异常处理/反射 + Python的多返回值/一行声明多个变量;谷歌:谷歌嫡出的战略性语言你懂的;应用领域:Web、容器、微服务、区块链…总结:Go...原创 2018-12-20 01:09:34 · 7674 阅读 · 2 评论 -
1.1 初识区块链:区块链基本概念
区块 概念:区块就是一种数据结构 一个区块包含一组经过验证的交易, 验证是一个检查资产提供方的交易签名的过程 区块内容如下 区块号码,也就是区块高度 当前区块的哈希值 默克尔树根 时间戳 区块大小 随机数 交易列表 创世区块:区块链中的第一个区块 链 每个区块头里包含上一个区块的区块头哈希 值,形成一条单向链 区块...原创 2018-11-19 09:23:47 · 686 阅读 · 0 评论 -
1.3 初识区块链:区块链分类
公有链 公共链是真正意义上的去中心化分布式区块链,系统安全性 由工作量证明或权益证明机制来保证,容易进行应用程序部 署,全球范围可以访问,不依赖于单个公司或者辖区。 公共链参与者往往匿名性强,任何参与者都可以在其中写入、 读取、 并参与交易验证,比特币区块链即是公共链最好代 表。 联盟链 联盟链采取部分去中心模式,参与成员为预先根据一定特征 所设定。系统内交易确认的节点一般也是事...原创 2018-11-19 09:24:06 · 213 阅读 · 0 评论 -
1.4 初识区块链:区块链架构特点
去中心化 区块链数据的存储、传输、验证等过程均基于分布式的系统结构,整个网络中没有中心化的机构存在 。理论上所有参与的节点都具有同等权利和义务 可靠数据库 1.区块链系统的数据库采用分布式存储,任一参与节点都可以拥有一份完整的数据库拷贝。参与系统的节点越多,数据库的安全性就越高 开源可编程 区块链系统通常都是开源的,像公有链、代码高度透明,其数据和程序对所有人公开 ,任何人都可...原创 2018-11-19 09:24:14 · 574 阅读 · 0 评论 -
1.6 初识区块链:公链前沿——EOS
学院Go语言视频主页https://edu.csdn.net/lecturer/1928 清华团队带你实战区块链开发 扫码获取海量视频及源码 QQ群:721929980原创 2018-11-19 09:24:28 · 273 阅读 · 0 评论 -
1.7 初识区块链:Fabirc详解
1.7 Fabirc详解项目概述 Fabric的目标是实现一个通胀的权限区块链的底层基础框架。为了适用于不同的场合,采用了模块化结构,提供可切换和可扩展的组件,比如共识算法、加密安全等服务 应用场景 超级账本有一个很重要的设计原则:按照“用例驱动”的方式实现,所有功能都应该有对应的用例需求。鉴于超级账本是一个通用型框架,无法预先确定将来所有的应用场景、因此先定义出部分典型的用...原创 2018-11-19 09:24:35 · 656 阅读 · 2 评论 -
3.1 以太坊:以太坊背景与概念概述
以太坊产生的背景 现象:以太坊创始人看到了比特币区块链技术上的缺陷,希望能够让区块链技术可以应用在加密货币之外的领域。 愿景:以太坊希望成为像TCP/IP协议这样的标准,能让以太坊区块链协议内置编程语言,兼容各种区块链的应用,不用像以前那样各自为政分别定义自己的区块链协议 什么是以太坊 以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中...原创 2018-11-20 09:23:17 · 965 阅读 · 0 评论 -
3.3 以太坊:以太坊核心词汇详解
以太坊虚拟机:以太坊中智能合约的运行环境。 账户 外部账户 被公钥-私钥对控制 合约账户 合约账户被存储在账户中的代码控制 外部账户与合约账户区别 内部结构 消息:类似于比特币上的交易 与比特币交易的不同点 以太坊的消息可以由外部实体或者合约创建,比特币的交易只能外部创建 以太坊的消息可以包含数据 如果以太坊消息的接收者是合约账户,可以选...原创 2018-11-20 14:11:08 · 233 阅读 · 0 评论 -
3.4 以太坊:以太坊架构详解
1.以太坊总体架构 以太坊详细架构 账户设计 外部账户:一般意义上的账户 合约账户:它是一种可编程的账户,合约存在以太坊的区块链上,它是代码和数据的集合。合约受代码控制并由外部所有账户激活 在以太坊中,区块链被作为一个通用的管理对象状态转换的去中心化平台,账户就是有状态的对象。外部所有账户的状态就是余额,而合约账户的状态可以是余额、代码执行情况,以及合约的存储。以太坊...原创 2018-11-20 14:11:17 · 3454 阅读 · 0 评论 -
3.5 以太坊:以太坊开发环境搭建
安装git sudo add-apt-repository ppa:git-core/ppa sudo apt-get update sudo apt-get install git 查看git版本号 git –version 安装geth sudo apt-get install software-properties-common sudo add-apt-...原创 2018-11-20 14:11:27 · 105 阅读 · 0 评论 -
3.7 以太坊:智能合约与solidity简介
智能合约简介 什么是智能合约:在计算机科学领域,智能合约是指一种计算机协议。 这类协议一旦部署就能自我执行和自我验证,不再需要人为干预 智能合约的优点: 高效的实时更新 准确执行 较低的人为干预风险 去中心化权威 较低的运行成本 缺点: The DAO攻击事件:合约存在漏洞导致大量以太币被盗,而且因为智能合约的去人为干预特性,使得漏洞无法线上修...原创 2018-11-20 14:11:45 · 234 阅读 · 0 评论 -
3.8 以太坊:solidity数据类型详解
1. 值类型:以下类型在传值时采用值传递 a. 布尔(Booleans): i. bool可能取值为常量true和false、在不初始化的情况下,默认为false。 ii. 支持运算符有 逻辑非(!)、逻辑与(&&)、逻辑(||)、等于(==)、不等于(!=) iii. 运算符&...原创 2018-11-20 14:11:56 · 478 阅读 · 0 评论 -
3.9 以太坊:solidity变量详解
变量(数据位置) 数据位置即变量的存储位置属性,共有三类 Memory:存储在内存中 storage:storage存储位置修饰的变量的数据永远存储在区块链上 Calldata:该数据位置是只读的,不会持久化到区块链上,一般只有外部函数会被指定 函数的参数、返回值默认数据位置是memory,函数局部变量的默认数据位置是storage。状态变量默认位置是storage 数据位...原创 2018-11-20 14:12:05 · 285 阅读 · 0 评论 -
3.10 以太坊:solidity数据结构详解
1. Solidity数据结构:数组、枚举、映射/字典、结构体 a. 枚举类型(Enums) i. 枚举类型是在Solidity中的一种用户自定义类型。他可以显示的转换与整数进行转换,但不能进行隐式转换。显示的转换会在运行时检查数值范围,如果不匹配,将会引起异常。枚举类型应至少有一名成员。 ii. 与其它编程语言一样、枚举类型默...原创 2018-11-20 14:12:13 · 271 阅读 · 0 评论 -
3.11 以太坊:solidity 函数详解
1. Solidity函数、权限、函数修饰符、事件 a. 函数 i. 概念:solidity也是一门函数式编程语言,函数可以做为其参数、变量、返回值 ii. 函数属于值类型,支持多个返回值 iii. 调用方式: 1. 内部调用: ...原创 2018-11-20 14:12:23 · 300 阅读 · 0 评论 -
3.12 以太坊:Truffle与web3初识
Truffle是一套基于以太坊的Solidity语言的开发框架,基于JavaScript。Truffle为以太坊提供了开发环境 、测试框架、资产管道,可以使以太坊的开发测试更加方便 Truffle提供功能如下 内置智能合约编译、链接、部署和二进制字节码管理 针对快速迭代开发的自动化合约 可脚本化、可扩展部署和迁移框架 网络管理,可部署到任意数量的公共网络和私有网络 使用Eth...原创 2018-11-20 14:12:59 · 339 阅读 · 0 评论 -
3.13 以太坊:Truffle 安装使用
安装 npm install -g truffle 创建项目 新建目录 Mkdir MetaCoin Cd MetaCoin 下载unbox Truffle unbox metacoin 如果想不在里面包含任何实例合约 使用truffle init Truffle boxes Truffle boxes是一种框架样板,有不同的种类,通过样板可...原创 2018-11-20 14:13:15 · 232 阅读 · 0 评论 -
3.14 以太坊:solidity库详解
lib库的使用、OpenZeppelin库、Ownable库、SafeMath库 lib库 库是一种不同类型的合约,没有存储,不拥有以太币 库中没有payable Using for 声明方式:using A for B,将A中定义的所有函数附着于任意类型B上,类型B的实例可以调用A中所有的方法 SafeMath库包含在OpenZeppelin中(node_m...原创 2018-11-20 14:13:24 · 322 阅读 · 0 评论 -
3.16 以太坊:openzeppelin库详解
地址:https://github.com/OpenZeppelin/openzeppelin-solidity 详解:https://www.linuxidc.com/Linux/2016-10/135891.htm 一个在以太坊上建立安全智能合约的框架,目前集成与Truffle和Embark 安装步骤(ubuntu) 新建一个自己的合约目录,进入合约目录 Truffle init...原创 2018-11-20 14:13:43 · 1315 阅读 · 0 评论 -
3.17 以太坊:去中心化微博
概述 一个运行在以太坊上的去中心化微博,去中心化意味着没有一个中心化的机构能控制你的微博,你发送的微博是由你自己完全控制的,任何人无法删除,关闭你的微博。一旦你的微博发出去以后,只有你自己能删除。 架构分析 3.整体流程 4.前端展示 学院Go语言视频主页https://e...原创 2018-11-20 14:13:52 · 551 阅读 · 0 评论 -
3.18 以太坊:去中心化图书馆
概述:以太坊线上图书馆,所有的图书借阅信息全部存储在以太坊区块链上 项目架构 后端逻辑 初始化web3 初始化合约 监听 获取所有账号 获取所有书本 按钮事件 监听 借出事件 归还事件 获取图书 初始化图书状态 列出所有账号 切换账号 添加记录 图书按钮点击事件 添加借阅记录 获取当前时间 ...原创 2018-11-20 14:14:04 · 391 阅读 · 0 评论 -
3.19 以太坊:实战僵尸工厂1
概述:通过智能合约完成僵尸工厂小游戏 功能实现 僵尸制造器 部分功能 把部队中所有的僵尸保存到数据库中 有一个函数可以生产新的僵尸 每个僵尸都有一个独一无二的面孔 特点 僵尸面孔取决于DNA,其DNA由一个16位数的整数组成 DNA数字不同部分对应不同特点 头部基因 僵尸有七种头型,前两位代表头部基因,所以头型计算...原创 2018-11-20 14:14:13 · 414 阅读 · 0 评论 -
3.20 以太坊:实战僵尸工厂2
僵尸作战系统 概述:在游戏中,玩家通过支付以太币来升级僵尸 提现:在发送以太之后,它会被存储进合约的以太坊账户中,并且被冻结,所以需要提现 僵尸战斗 战斗逻辑 你选择一个自己的僵尸,然后选择一个对手的僵尸去攻击。 如果你是攻击方,你将有70%的几率获胜,防守方将有30%的几率获胜。 所有的僵尸(攻守双方)都将有一个 winCount 和一个 lossCou...原创 2018-11-20 14:14:21 · 413 阅读 · 0 评论 -
3.21 以太坊:以太猫源码分析1
概述: Cryptokitties,众所周知的迷恋猫的游戏,是基于以太坊平台运行的。用户在游戏中可以养大、买卖并繁育“电子宠物”小猫,每只小猫和繁衍的后代都是独一无二的。由于它是第一款真正意义上的区块链游戏,在面世之初就受到了大量关注,一度造成以太坊网络拥堵,虽然这一部分是因为以太坊当前TPS本身性能不高导致的,但也能看出这款游戏的火爆程度。 上面就是以太猫的简单图示 3.源码下...原创 2018-11-20 14:14:30 · 1064 阅读 · 0 评论 -
3.22 以太坊:以太猫源码分析2
00A. Ownable 合约:提供基本的认证控制 // 提供基本的认证控制contract Ownable { address public owner; /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. *...原创 2018-11-20 14:14:44 · 239 阅读 · 0 评论 -
3.23 以太坊:vchain源码分析1
在做vechain智能合约源码分析之前,我们先来看一下它的简介 一、项目名称 VeChain(VEN)二、项目定位 全球领先的区块链商品和信息平台三、项目简评 项目旨在解决商业社会中产品的信息和信任问题,利用区块链做高附加值产品的防伪追朔系统,基于此打造信任商业的生态体系。四、项目愿景 vechain的目标其实就是应用区块链技术构造一个既可以自我循环、也可以向外拓展的可信任分布...原创 2018-11-20 14:14:53 · 309 阅读 · 0 评论 -
3.24 以太坊:vchain源码分析2
接下来是合约的第二部分,直接上代码,注释都在代码中// Contract to sell and distribute VEN tokens// 分发VEN 代币contract VENSale is Owned{ /// chart of stage transition /// /// deploy initialize startTime ...原创 2018-11-20 14:15:04 · 216 阅读 · 0 评论 -
3.25 以太坊:实战智能合约众筹1
这次我们来看看怎么实现以太坊的众筹智能合约案例,首先我们了解一下下面的概念 1、什么是ICO? ICO是以初始产生的数字加密货币作为投资回报的一种筹措资金的方式,它的概念源自证券界的Initial Public Offering(IPO,首次公开发行)。 相较于传统意义上的IPO,ICO具有可以缩短投融资链、降低投融资门槛、流动性佳、全球性投资等优势。常见的ICO里,数字货币和区块链项目...原创 2018-11-20 14:16:03 · 288 阅读 · 0 评论 -
3.26 以太坊:实战智能合约众筹2
在上面我们自己手写了一个众筹案例、接下来对案例做一个调试检查 首先我们实现一个ERC20 TOKEN,代码如下:pragma solidity ^0.4.16;interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData...原创 2018-11-20 14:16:13 · 209 阅读 · 0 评论 -
4.1 IPFS:IPFS初识
IPFS 简介:IPFS(InterPlanetary File System)是一个点对点的分布式超媒体分发协议 IPFS工作原理 每个文件及其中的所有块都被赋予一个称为加密散列的唯一指纹 IPFS通过网络删除重复的具有相同哈希值的文件,通过计算可以判断哪些文件是冗余的、重复的。并跟踪每个文件的版本历史记录。 每个网络节点只存储他感兴趣的内容,以及一些索引信息,有助于弄清楚...原创 2018-11-19 09:22:26 · 196 阅读 · 0 评论 -
4.2 IPFS:IPFS基本安装使用
安装 IPFS获取 https://docs.ipfs.io/introduction/install/ 安装 sudo tar -zxvf go-ipfs_v0.4.17_freebsd-amd64.tar.gz -C /usr/local/bin/ sudo ln -s /usr/local/bin/go-ipfs/ipfs /usr/bin/ipfs ...原创 2018-11-19 09:22:34 · 190 阅读 · 0 评论 -
4.3 IPFS:IPFS+区块链
js-ipfs-api 如何使用js-ipfs-api 具体实现 安装create-react-app:sudo npm install -g create-react-app 创建React项目:create-react-app ipfs-http-demo 运行:cd ipfs-http-demo && npm start 安装 ipfs-api:np...原创 2018-11-19 09:22:41 · 297 阅读 · 0 评论 -
分布式1:CentOS7安装
CentOS7开发环境搭建一、 安装系统新建虚拟机选择“自定义(高级)”,并点击【下一步】选择虚拟机硬件兼容性,并点击【下一步】选择“稍后安装操作系统”,并点击【下一步】选择操作系统版本,并点击【下一步】命名虚拟机,可任意路径,并点击【下一步】配置处理器,并点击【下一步】设置虚拟机内存大小,并点击【下一步】选择“使用网络地址转换(NAT)”,...原创 2018-11-17 00:19:02 · 148 阅读 · 0 评论 -
5.1 以太坊:以太坊源码详解1
go-ethereum代码阅读环境搭建Ubuntu 16.04 64bit安装GO配置环境变量(GOROOT, GOPATH, GOBIN)下载源码:$ cd $GOPATH; $ mkdir src$ cd src #进入go项目目录,创建src目录, 并进入src目录$ git clone https://github.com/ethereum/go-ether...原创 2018-11-20 14:16:49 · 298 阅读 · 0 评论 -
5.2 以太坊:以太坊源码详解2
接下来我们看一下RLP,RLP是一种编码规则,以太坊中的数据都会经过它编码之后才会存储到数据库中, 上面是RLP的编码原理,接下来我们看一下以太坊中的RLP 从图上我们可以看到,在以太坊源码中,RLP包里面有用的文件其实只有三个,接下来我们详细看看 typecache.go: 1. 核心数据结构核心数据结构var ( typeCacheMutex sy...原创 2018-11-20 14:16:57 · 335 阅读 · 0 评论 -
分布式3:Hadoop概念
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throug...原创 2018-11-17 00:19:20 · 207 阅读 · 0 评论 -
5.3 以太坊:以太坊源码详解3
一、转账的概念和交易的基本流程 用户输入转入的地址和金额 系统用转账地址的私钥对交易进行签名(确保这笔交易是由发起交易的所有人) 对交易进行验证 存入交易缓存池 广播交易 二、交易的数据type Transaction struct { data txdata // 交易数据 // caches hash atomic.Value // 交易哈希 ...原创 2018-11-20 14:17:06 · 184 阅读 · 0 评论 -
分布式4:Hadoop集群搭建
CentOS7下搭建hadoop2.7.3完全分布式这里搭建的是3个节点的完全分布式,即1个nameNode,2个dataNode,分别如下:CentOS-master nameNode 192.168.11.128CentOS-node1 dataNode 192.168.11.131CentOS-node2 dataNode 192.168…11.1321...原创 2018-11-17 00:19:29 · 116 阅读 · 0 评论 -
5.4 以太坊:以太坊源码详解4
MPT(实现快速查找以节省存储空间) 背景Trie:用于快速检索的多叉树,查找速度快、但是需要耗费大量的存储空间 Patricia Trie:耗费的空间更小 Merkle Tree:Merkle树是一种用于快速验证内容完整性的数据结构,其基本原理是分别计算树的叶⼦结点的hash值,然后把叶⼦结点的hash值拼接在⼀起,再计算⼀次hash作为其⽗结点的hash值,依次向上直到根结点,根结点的...原创 2018-11-20 14:17:16 · 169 阅读 · 0 评论 -
分布式5:zookeeper分布式
一、 为什么需要zookeeper 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等) 大部分应用需要开发私有的协调程序,缺乏一个通用的机制 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器 zookeeper可以提供通用的分布式锁服务,用以协调分布式应用,它是一个开源的分布式应用协调服务 分布式:多台计算机、它们之间通过网络进行通...原创 2018-11-17 00:19:36 · 115 阅读 · 0 评论