
区块链学习
dieju8330
莫道黯然銷魂,何處柳暗花明
博客迁移☞http://epsilonjohn.club/
展开
-
以太坊学习(7)利用RPS-JSON【post|get】与节点进行交互
利用RPC-JSON【post|get】与节点进行交互关于以太坊RPC-JSON接口的官方说明文档如下:https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_accounts通过POST即可与节点进行交互可以开发PC端窗体程序与节点进行交互关于RPC-JSON接口格式: '{"jsonrpc":"2.0","method":...原创 2018-11-06 16:37:20 · 421 阅读 · 0 评论 -
Solidity学习::(19)合约之间的调用问题【有关接口】
合约之间的调用问题看了一些案例,个人认为合约之间的调用大致可分为两种,一种是编译时同时编译的两个合约,另一种是分开两次编译的合约【需要用到接口】,在remix的体现如下一、编译时,同时编译的两个合约之间的调用pragma solidity ^0.4.0; contract AccessGetter{ uint public data = 10; function f...原创 2018-10-23 16:01:56 · 6250 阅读 · 0 评论 -
Solidity学习::(18)发送ether再探讨
发送ether再探讨引入现在假设你有下述的情景: 假设你有一个基于以太坊的公司,现在需要向用户分红。为了简单,比如100个用户,平均分好,现在打算发送给他们每个人。当使用send()时,会触发fallback函数,可能会导致消耗许多的gas,损失公司所赚取的利润。原因是因为在EVM中,正常地址和账户地址之间没有任何区别。大多数的发送也是正常的,但比如到第11个用户时,这个用户可以实现一...转载 2018-10-23 10:41:51 · 618 阅读 · 0 评论 -
Solidity学习::(17)fallback函数
fallback函数在合约调用没有匹配到函数签名,或者调用没有带任何数据时被自动调用。 声明方式:没有名字,不能有参数,没有返回值pragma solidity ^0.4.0;contract SimpleFallback{ function(){ //fallback function }}简单例子:由于Solidity编辑器remix中...原创 2018-10-23 10:16:39 · 4651 阅读 · 0 评论 -
以太坊学习(5)利用Web3.js与节点交互【1】
利用Web3.js与节点交互 一、环境配置【写在最前:本文用到的主要工具:node.js+geth+ web3.js 1.0.0-beta.18】1、确保已经安装node.js个人在debian9上安装nodejs的经历比较坎坷,但是据说ubuntu上安装方便很多ubuntu下: //安装Nodesudo apt-get install nodejs//安装Node...原创 2018-10-17 18:21:23 · 3240 阅读 · 2 评论 -
Solidity学习::(14)变量初始化
变量初始化1、初始化的值值类型bool的默认值为false bytes32的默认值为32字节长的0 uint默认为0 address默认为0x0对于引用类型bytes类型默认值为空字节数组 string为默认值为空串 动态数组uint8[] memory arr为空。 2、 声明后使用方式值类型对于值类型,声明变量后,即赋值为默认值,可直接使用...原创 2018-10-10 20:10:00 · 2974 阅读 · 0 评论 -
以太坊学习(5)利用Web3.js与节点交互【2】
利用Web3.js与节点交互【2】这部分主要介绍利用web3.js对已经部署的合约进行一些操作等 写在最前:web3.js 1.0版本跟 0.2.x版本的使用区别比较大,这里暂时先给出1.0版本下的调用web3.js 1.0 官方文档:https://web3js.readthedocs.io/en/1.0/web3.html#value一、继续沿用(利用Web3.js与节点交...原创 2018-10-19 16:53:14 · 1630 阅读 · 0 评论 -
以太坊学习(8)编写C++程序与以太坊节点进行交互【2】
编写C++程序与节点进行交互【1】简单版本,需对http request有一定了解,以及QT的基本操作 【2】进行类的封装,个人水平有限,如有纰漏,请下方留言 测试环境:debian 9 QT 5.5 geth/v1.8.14 C++大数bigint library下载: https://pan.baidu.com/s/1bc_d81J2lsqs4bRKa9rNyA 提...原创 2018-11-13 21:04:05 · 1023 阅读 · 0 评论 -
以太坊学习(8)编写C++程序与以太坊节点进行交互【1】
编写C++程序与节点进行交互【1】简单版本,需对http request有一定了解,以及QT的基本操作 测试环境:debian 9 QT 5.5 geth/v1.8.14 一、创建项目(1)选择widgets application(2)设置项目名(3)设置基类等二、界面元件(1)双击ui文件,进入ui设计(2)拖入如下元件 (3)...原创 2018-11-12 10:56:14 · 1007 阅读 · 0 评论 -
区块链学习(11)发送离线签名交易
离线发送签名交易何为离线?指你的机器上并没有运行着以太坊客户端,也就没有节点可言了何为签名交易?即利用keystore文件和解锁账户所需的密码重新计算出一个对应着账户地址的私钥,利用这个私钥对想要发起的交易进行签名,签名后会得到一串16进制形式的字符串,即可通过广播将该交易发布到区块链中,以待被矿工打包确认。应用场景?一些以太坊Dapp、以及应用程序并不希望其用户...原创 2019-02-27 19:12:03 · 2619 阅读 · 0 评论 -
以太坊学习(10)geth 用法及参数含义
geth 用法及参数含义$ geth helpNAME: geth - the go-ethereum command line interface Copyright 2013-2018 The go-ethereum AuthorsUSAGE: geth [options] command [command options] [arguments...] ...转载 2019-01-14 17:18:36 · 1014 阅读 · 0 评论 -
以太坊学习(::)简单项目实战
简单项目实战目的:以html+js构建网页,展示链上信息。一、合约合约内容: 用结构体user记录【用户】个人信息,映射为users 用结构体consignment记录【电能】交易订单,映射为orders 利用call获取订单的信息 合约如下:pragma solidity ^0.4.13;//pragma experimental ABIEncoderV2;con...原创 2018-12-06 21:57:14 · 1149 阅读 · 0 评论 -
以太坊学习(9)关于geth搭建私有链下调用合约遇到require (false)会消耗完所有gas的解决方案【国内首发】
关于geth搭建私有链下调用合约遇到require (false)会消耗完所有gas的解决方案如果你没遇到过这个问题,你会觉得很奇怪,Solidity的关键字require,根据用法解释:https://ethfans.org/posts/when-to-use-revert-assert-and-require-in-solidity 如果括号内条件为false,不是应该返还未消耗的gas...原创 2018-12-01 10:44:13 · 1519 阅读 · 0 评论 -
Solidity学习::(13)类型转换
类型转换类型转换,是一个十分重要,常用的手段一、隐式转换隐式转换,就是当一个运算符能支持不同类型,编译器会隐式的尝试将一个操作数的类型,转为另一个操作数的类型,赋值同理。条件是:值类型间的互相转换只要不丢失信息,语义可通则可转换。 就是说,uint8可转换到uint16、uint32、、、等,但不能反过来 同样的,无符号...原创 2018-10-10 10:50:14 · 4064 阅读 · 0 评论 -
Solidity学习::(12)特殊的delete操作
delete操作简介: 区块链做为一种公用资源,为避免大家滥用。且鼓励主动对空间的回收,释放空间将会返还一些gas。但是这里的delete跟其他语言的delete有区别 分别说明:1、booldelete后,对应变量被清为false;pragma solidity ^0.4.0;contract delete_test{ function delet...原创 2018-10-09 15:33:33 · 313 阅读 · 0 评论 -
Solidity学习::(8)数据位置特性
数据位置特性引入 1、在中心化的application中,代码被翻译成逻辑,从而操作数据,而数据一般都储存在数据库中。2、在去中心化的Dapp中,区块链本身就是一个数据库,因此只要用一个属性来标识数据(变量),就可以让其永久地存储在区块链中。 介绍 数据位置,变量的存储位置属性。有三种类型,memory,storage和calldata。 最后一种数据位置比较特...原创 2018-09-30 10:30:43 · 422 阅读 · 0 评论 -
Solidity学习::(1)变量类型
1、值类型布尔类型 (1)取值:true、false (2)运算符:!、&&、||、==、!= 整数类型 (1)int:有符号整数 (2)uint:无符号整数 (3)可有后缀,但必须为8的整数倍,如:int8、int16 int默认为int256,uint默认uint256 枚举类型 ...原创 2018-09-06 21:25:16 · 759 阅读 · 0 评论 -
Solidity学习::(4)函数
Solidity中,一个函数可以有多个参数,也可有多个返回值。一、函数定义contract SimpleContract{ function calculate(uint a,uint b) returns(uint sum,uint product){ sum=a+b; product=a*b; //或者使用return(a+b,...原创 2018-09-09 20:05:58 · 473 阅读 · 0 评论 -
Solidity学习::(3)内置单位
1、货币单位wei finney szabo ether 若不加后缀,则默认都为wei2、时间单位1==1 seconds 1 minutes == 60 seconds …… 特别注意,使用这些单位时要特别小心,因为一年并不总有365天;同时因为有闰秒的存在,一天也并不总是24小时。 为了保证日历库的精确性,最好由外部供应商定期更新。3、区块和交易属性 ...原创 2018-09-07 20:42:51 · 972 阅读 · 0 评论 -
Solidity学习::(2)delete运算符
solidity语言中,delete与在其他语言的不同.Solidity中的delete仅仅是一项赋值运算,用作给变量赋初始值。而不是删除对象具体作用参见下面代码注释:contract DeleteExample{ function deleteArray(){ uint[] memory a=new uint[](3); a[0]=1;a[1...原创 2018-09-07 20:06:27 · 317 阅读 · 0 评论 -
以太坊学习(4)geth搭建私有链--加入节点
geth---搭建多节点私有链1、动态加入节点(1)先看本地网络配置ifconfig提示没找到命令解决方案: sudo apt-get install net-tools可以看到,虚拟机A的IP:192.168.209.133 虚拟机B的IP:192.168.209.134(2)将上一文中私有链搭建中所新建genesis.json、keystore文...原创 2018-08-15 19:25:51 · 4231 阅读 · 0 评论 -
以太坊学习(2)MPT树--白话版(转)
MPT的全称是Merkle Patricia Tree, 从这里可以看出MPT是Merkle Tree + Patricia Tree。接下来就就来讲讲这两种树: Merkle Tree 区块链P2P网络中,如果需要传输的数据很大,就需要同时从多个机器上下载数据,而且很可能有些机器是不稳定(可能下载速度很慢)或者不可信的(需要重新下载)。为了快速下载大块数据并验证,更好的办...转载 2018-08-06 19:34:11 · 3426 阅读 · 1 评论 -
以太坊学习(1)trie树
1. 什么是trie树 1.Trie树 (特例结构树) Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字...转载 2018-08-04 12:19:58 · 599 阅读 · 0 评论 -
Solidity学习::(5)异常处理
异常处理 以太坊使用状态回退机制处理异常。如果发生异常,当前消息调用和子消息调用产生的所有状态变化都将被撤销并且返回调用者一个报错信号。Solidity语言提供了两个函数:assert和require 来检查条件,并且在条件不满足时抛出一个异常。assert函数通常用于检查变量和内部错误,require函数用于确保程序执行的必要条件是成立的。一个正常运行的程序不应该遇到assert和r...原创 2018-09-16 21:03:51 · 1158 阅读 · 0 评论 -
Solidity学习::(6)智能合约继承
例子1:多继承下有重名函数,执行哪个函数的问题contract owned { funtion owned() { owner =msg.sender;} //构造函数 address owner;}contract mortal is owned { //mortal继承自owned function kill() { if(msg.sender...原创 2018-09-18 20:31:40 · 864 阅读 · 0 评论 -
以太坊学习(6)关于web3.js 1.0版本中event事件无法触发的问题
关于web3.js 1.0版本中event事件无法触发的问题写在最前:请检查你的provider连接方式,http provider已不支持event事件的触发了具体请看官方源文档一、问题还原:(1)先给出智能合约代码合约内容比较简单 deposit()函数,对合约地址发起交易,可发送以太币。。相当于存钱到合约地址 event transfer() 事件pragm...原创 2018-10-18 16:36:44 · 2092 阅读 · 0 评论 -
Solidity学习::(11)mapping映射类型
映射类型作用:映射是一种引用类型,存储键值对,提供根据键查找值,与其它语言中的字典类似,但也有不同定义(声明) :由于在映射中键的数量是任意的,导致映射的大小也是变长的。映射只能声明为storage的状态变量,或被赋值给一个storage的对象引用。声明举例:mapping(uint => uint) stateVar; 赋值(建立映射): s...原创 2018-10-08 15:50:35 · 6598 阅读 · 0 评论 -
Solidity学习::(10)自定义结构体
自定义结构体定义 跟其他语言类似 //学生 struct Student{ string name; int num; } //班级 struct Class{ string clsName; //学生的列表 Student[] students; mapping(string=>Student)index;...原创 2018-10-08 15:04:30 · 1755 阅读 · 1 评论 -
Solidity学习::(9)数组特性
数组数组的定义一、定长数组要注意定长数组的长度与内容要匹配uint[3] memory a = [uint(1), 2, 3]; //这是正确定义uint[3] memory a = [1, 2, 3]; //这样也不行 stri...原创 2018-10-08 10:21:56 · 1098 阅读 · 0 评论 -
Solidity学习::(7)智能合约案例-1
智能合约案例-1一、打开remix-idehttp://remix.ethereum.org/#optimize=false二、 先导内容payable:函数上增加payable标识,即可接收ether,并会把ether存在当前合约。一般在构造函数上加payable,那么部署合约时就可以通过发起账户给合约地址一并发送以太币。另外发送以太币到合约的方法还有:address.call(...原创 2018-09-23 10:46:59 · 1656 阅读 · 0 评论 -
Solidity学习::(16)函数修改器
函数修改器作用函数修改器(Function Modifiers)可以方便的控制函数的逻辑,比如可以在某个行为执行前检查某个前置条件,函数修改器还支持继承和重写。定义格式: modifier onlyOwner { if (msg.sender != owner) throw; _; }在函数修改器代码块内,判断条件不符合就抛出异常,符合则执行占位符...原创 2018-10-12 11:29:21 · 939 阅读 · 0 评论 -
Solidity学习::(15)getter访问器
getter访问器作用: 对于所有public的状态变量,Solidity语言编译器,提供了自动为状态变量生成对应的getter(访问器)的特性在合约内,我们可以直接操作及访问data状态变量,但在合约外我们只能用data()的方式来访问。另外,在合约内,我们不能直接访问data(),因为访问器函数的可见性是external。直观版:(1)合约内访问public状态变量a--...原创 2018-10-11 16:44:11 · 646 阅读 · 0 评论 -
Solidity学习::(7)智能合约案例-2(验证签名)
椭圆曲线DSA(ECDSA)对于这个,就不介绍了。下引用给出签名的生成和验证过程。假如Alice要对消息m加上数字签名,而Bob需要验证该签名。生成数字签名Alice根据随机数r和基点G求出点rG = (x, y); Alicce根据随机数r、消息m的散列值h、和私匙a计算 最后,Alice将消息m、点rG = (x, y)和s发送给Bob,其中点rG和...原创 2018-09-26 21:11:04 · 8204 阅读 · 2 评论