
区块链
文章平均质量分 65
Programmer_CJC
nothing for nothing
展开
-
web3.py获取公有链数据
1. geth同步本地数据,如果需要账户信息的数据,需要用full模式同步。由于以太坊曾经受到了攻击,2.4m起同步速度异常缓慢2. 安装web3, pypiwin32(windows下,因为要读文件,所以必须要装这个)3. 简单的example:from web3.eth import Ethfrom web3 import Web3, HTTPProvider, IPCProviderw3...原创 2018-04-08 15:00:31 · 3406 阅读 · 0 评论 -
区块链地址的产生方式
在理解区块链地址产生方法之前,先来简单地理解一下公钥私钥的加密原理:1. 公钥是对外公开的,而私钥是保密的。当A想要把内容发送给B时,A会用他的私钥对内容加密,然后发送给B。B会用A的公钥来解密。2. 公钥是通过私钥产生的,这个过程是无法逆转的。3. 当B需要验证A的身份(数字签名)时,B可以用公钥验证这个数字签名是否是用A的私钥产生的。 当创建比特币的账户时,用户会在本地生成...原创 2018-11-16 10:52:48 · 3674 阅读 · 0 评论 -
区块链(以太坊智能合约)与传统软件的区别
区块链与传统软件设计有很多区别:1. 区块链是分布式的,而传统软件大多是中心化的2. 区块链通常有无数个备份(每个矿工处都会有一个完整的区块链备份),而传统软件只会在单个或者若干个节点做备份3. 区块链是一个链式结构,在区块链上的所有记录都是可追溯且无法修改的,而传统的系统可能难以追溯,且可以被人工修改4. 区块链无法停止,一经上线,就会一直运行,而传统软件存在服务器停止的可能性...原创 2018-11-16 10:31:26 · 1367 阅读 · 0 评论 -
Solidity原理(六):用solc编译smart contract,用evm反编译bytecode
首先需要安装solc和evmsolc:https://github.com/ethereum/solidity/releasesevm: https://geth.ethereum.org/downloads/编译一个smart contract可以通过指令 solc --bin-runtime filepath来得到bytecode反编译bytecode可以通过evm --dissam b...原创 2018-05-06 23:07:25 · 6052 阅读 · 3 评论 -
Solidity原理(五):EVM Bytecode文件结构以及如何执行
pragma solidity ^0.4.22;contract Demo{ uint public value1 = 0; uint public value2 = 0; function A(uint v) public returns(uint){ value1 += v; return value1; } function B(uint v) publi...原创 2018-05-06 22:47:54 · 5354 阅读 · 4 评论 -
Solidity原理(四):从Bytecode角度分析,EVM如何在基本块之间跳转
BasicBlock:在解释EVM是如何执行之前,先来解释一下BasicBlock(基本块)。一个基本块由一系列的指令构成,有一个入口和一个出口,入口就是第一个指令,出口就是最后一个指令。出口的类型有: 1. 条件跳转(JUMPI),2. 非条件跳转(JUMP),3. 结束指令(RETURN,REVERT)4.什么都没有,直接fall to下一个block1. 条件跳转(JUMPI)...原创 2018-05-06 21:19:21 · 2678 阅读 · 0 评论 -
Solidity原理 (二):库(Library)(待修改)
什么是库:在Solidity中,库和合约有点类似,你可以把库理解成Java中只包含static函数的类。它的作用和目的是代码复用。和普通合约有点不同的是,Library中无法包含storage变量。创建和使用库:下面的Library,有一个包含mapping的数据结构,并且提供了查询和插入的功能。注意在函数中传入的Data都加入了storage关键字,这里是传入了一个Data的引用。// Code...原创 2018-04-28 11:22:08 · 1321 阅读 · 0 评论 -
Solidity原理(三):abi编码以及与EVM交互的原理
1. 如何生成smart contract对应的ABI(ApplicationBinary Interface)函数的abi由以下元素组成1) Type:有“function”,“constructor”, “fallback”三种2) Name:函数名3) Inputs:函数的参数类型,参数名,components(tuple类型才会有)4) Output:函...原创 2018-05-04 09:17:02 · 6404 阅读 · 0 评论 -
以太坊私有链搭建
1. 新建一个文件夹,文件夹下创建文件,genesis.jsongenesis.json是创世块,包含了一些私有链的设置,内容如下{"config": {"chainId": 15,"homesteadBlock": 0,"eip155Block": 0,"eip158Block": 0},"difficulty": "10000","gasL原创 2018-05-09 22:45:31 · 488 阅读 · 0 评论 -
Solidity原理(一):继承(Inheritance)
首先看一段官网的描述:Solidity supports multiple inheritance by copying code including polymorphism.When a contract inherits from multiple contracts, only a single contract is created on the blockchain, and the ...原创 2018-04-22 23:25:17 · 3217 阅读 · 0 评论