Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | 云栖社区 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Github | Search | About

部分 II. Ethereum 以太坊

目录

9. 以太坊
9.1. 名词解释
9.2. IBAN (International Bank Account Number)
9.2.1. iban:国际银行账号
9.2.2. 以太坊iban:新的国别码和BBAN编码方案
9.2.3. iban账号与以太坊地址的转换
9.2.4. 检查iban账号的有效性
9.3. 如何计算Gas手续费
9.4. 转出账号中所有 ETH,Ethereum Wallet 中的 Send everything 实现方法
9.5. (0/12 block confirmations)
9.6. 太坊账户管理 keystore 文件
9.6.1. 什么是 keystore 文件
9.6.2. keystore 文件的内容
9.6.3. keystore文件如何工作的?
9.6.3.1. 加密你的私钥
9.6.3.2. 用你的密码来保护它
9.6.3.3. 确认输入的密码是正确的
9.6.3.4. 将这三步结合起来
9.7. 批量转账遇到的问题与解决方案
9.8. 代币兑换
10. 以太坊私链入门
10.1. 软件安装与配置
10.1.1. Ubuntu
10.1.1.1. 安装 geth
10.1.1.2. 安装 solc
10.1.1.3. Node.js
10.1.2. CentOS 7
10.1.3. Windows
10.1.4. Mac OS
10.1.4.1. 安装 Node
10.1.4.2. Ethereum Wallet
10.1.5. 编译安装
10.1.6. Netkiller OSCM 一键安装
10.1.6.1. 1.8.10
10.1.6.2. 1.8.1
10.1.6.3. 1.8.10
10.1.7. 防止 geth 异常退出
10.2. 创世区块
10.2.1. 初始化创世区块
10.2.2. 创建主账号
10.2.3. 启动节点
10.2.4. 使用节点进行挖矿
10.2.4.1. 启动矿工开始挖矿
10.2.4.2. 停止挖矿
10.2.4.3. 查看所挖金额
10.2.5. 在创世链中制定矿工账号并为它充值
10.3. Blockchain explorer (区块链浏览器)
10.4. 单机多实例演示
10.4.1. 实例一
10.4.2. 实例二
10.4.3. 添加节点
10.4.4. 节点测试
10.5. 使用 pm2 启动以太坊
11. geth v1.8.16 命令详解
11.1. api 相关参数
11.1.1. rpcapi
11.1.2. rpcaddr
11.2. 启动 Websocket 端口
11.3. 日志
11.4. 控制台
11.5. 连接控制台
11.5.1. 指定 geth.ipc 文件位置
11.5.2. IPC 方式连接
11.5.3. TCP 连接控制台
11.5.4. WebSocket 方式
11.6. 账号管理
11.6.1. 新建账号
11.6.2. 查看账号
11.6.3. 从私钥导入以太坊地址
11.7. 配置自动解锁账号
11.8. 运行JS
11.9. 节点管理
11.10. 启动挖矿
11.10.1. 挖矿线程数
11.10.2. 指定旷工账号
11.11. 运行智能合约
11.12. Ropsten测试网络
11.13. 静态节点
11.14. JavaScript Console
11.14.1. personal 管理
11.14.1.1. 创建账号
11.14.1.2. 列出账号
11.14.1.3. 解锁账号
11.14.2. eth 管理
11.14.2.1. 矿工账号
11.14.2.2. 余额
11.14.2.2.1. 单位转换
11.14.2.2.2. 一次检查所有账号余额
11.14.2.3. 解锁账号
11.14.2.4. 转账
11.14.2.5. 查看挂起的交易
11.14.2.6. 查看当前区块总数
11.14.2.7. 查看当前Gas价格
11.14.2.8. 评估执行花费的GAS
11.14.2.9. 查看区块信息
11.14.2.10. 返回交易信息
11.14.2.11. 返回交易收据
11.14.2.12. eth.syncing 同步状态
11.14.2.13. 查看智能合约编译器
11.14.3. web3
11.14.3.1. Ether币的基本单位
11.14.3.2. web3.toWei
11.14.3.3. web3.fromWei
11.14.4. admin 管理
11.14.4.1. 看看 networkid
11.14.4.2. 节点管理
11.14.4.2.1. 显示节点
11.14.4.2.2. 添加节点
11.14.4.2.3. 查看节点
11.14.4.2.4. networkid
11.14.5. miner 挖矿管理
11.14.5.1. 开始挖矿
11.14.5.2. 停止挖矿
11.14.5.3. 设置默认矿工账号
11.14.6. txpool 管理
11.14.6.1. txpool.status
11.14.7. net
11.14.7.1. 监听状态
12. Wallet
12.1. Ethereum Wallet(Mist)
12.1.1. Ethereum Wallet 工作原理
12.1.1.1. geth 启动 ropsten 测试网
12.1.1.2. 连接到本地测试网络
12.1.1.2.1. IPC
12.1.1.2.2. TCP
12.1.1.3. 控制台
12.1.2. 主网络
12.1.2.1. 主网启动参数
12.1.2.2. 进入主网
12.1.2.3. 以太坊区块浏览器
12.1.3. Ropsten 测试网络
12.1.3.1. 启动参数
12.1.3.2. 获得测试币
12.1.3.3. Etherscan
12.1.4. Rinkeby 测试网络
12.1.4.1. 测试网络
12.1.4.2. 获取测试网络上的以太币
12.1.4.3. 连接节点(Light node)
12.1.4.4. 区块链浏览器
12.1.5. Solo Network
12.1.6. 私网
12.1.7. 删除废弃的合约
12.1.8. 免安装,在线使用
12.1.9. 获得空投币
12.2. MetaMask
12.2.1. 测试网络
12.2.1.1. 获取测试网络上的以太币
12.2.2. mnemonic - Reveal seed words
12.2.3. 添加 Token 币种
12.2.4. MetaMask Vault Decryptor
12.2.5. 部署合约
12.3. MyEtherWallet
12.3.1. 执行ERC20智能合约函数
12.3.1.1. 查询余额
12.3.1.2. 销毁代币
12.3.1.3. 冻结账号
12.3.1.4. 增发代币
12.3.1.5. 锁仓
12.3.1.6. 批量打币
12.3.1.7. 修改合约管理者
12.3.1.8. 设置兑换比例
12.3.1.9. 空投设置
12.4. MyCrypto
12.5. imToken
12.5.1. 添加 Token
13. Token
13.1. Ethereum Wallet 创建ERC20代币合约
13.1.1. 合约文件
13.1.2. 部署合约
13.1.3. 代币转账
13.1.4. Verify And Publish
13.1.5. Links 链接更新
13.2. ERC20 Token Solidity 0.4.24
13.2.1. 构造方法
13.2.2. 官方规定 Method 方法
13.2.2.1. name
13.2.2.2. symbol
13.2.2.3. decimals
13.2.2.4. totalSupply
13.2.2.5. balanceOf
13.2.2.6. transfer
13.2.2.7. approve
13.2.2.8. transferFrom
13.2.2.9. allowance
13.2.3. 事件
13.2.3.1. Transfer
13.2.3.2. Approval
13.3. Netkiller Crowdsale Contract
13.3.1. Solidity 0.4.24
13.3.2. Solidity 0.4.21
13.4. ERC721 - Non-Fungible Tokens
13.4.1.
13.4.2. ERC721Metadata (可选)
13.4.3. ERC721Enumerable (可选)
13.5. 经典参考案例
13.5.1. Enterprise Token Ecosystem (ETE)
13.5.2. 积分链 (PE Chain)
13.5.3. Global star league chain (GSLC)
13.5.4. Kyber Network
13.6. 代币合约官方文档
13.6.1. ERC20
13.6.1.1. 基本Token 官方提供的例子
13.6.1.2. 官方提供的例子 ADVANCED TOKEN
13.6.1.3. Netkiller Basic Token 的例子
13.6.1.4. Netkiller ADVANCED TOKEN
13.6.1.5. 空投代币
13.6.1.5.1. 案例一
13.6.1.5.2. 案例二
13.6.1.5.3. 案例三
13.6.2. ERC223 token standard reference implementation.
13.6.3. ERC721 - Non-fungible Token Standard
13.6.4. ERC827 Token Standard (ERC20 Extension)
13.6.5. ERC875 for non fungible tokens and simple atomic swaps
13.6.6. ERC: Standard URI scheme with metadata, value and byte code
14. 智能合约语言 Solidity v0.5.0
14.1. Remix - browser-solidity
14.1.1. 将 Remix(browser-solidity) 安装到本地
14.1.2. 输入数组
14.2. solc 命令
14.2.1. 使用 solc 编译 *.sol 代码
14.3. 智能合约入门演示
14.4. 数据类型
14.4.1. 数值型
14.4.1.1. 加 +,减 -,乘 *,除 / 运算演示
14.4.1.2. 求余 % 运算演示
14.4.1.3. 幂运算演示
14.4.1.4. 与 &,| 或,非 ~,异或 ^ 演示
14.4.1.5. 位移演示
14.4.2. 字符串
14.4.2.1. 获取字符串长度
14.4.3. 布尔(Booleans)
14.4.4. 字节类型
14.4.5. 数组
14.4.5.1. length
14.4.5.2. push() 方法
14.4.6. 枚举类型
14.4.7. 结构体
14.4.7.1. 函数返回Struct
14.4.8. address
14.4.8.1. payable
14.4.8.2. .value()
14.4.8.3. .gas()
14.4.9. mapping
14.5. 单位
14.5.1. 货币单位(Ether Units)
14.5.2. 时间单位(Time Units)
14.6. 变量
14.6.1. 全局变量
14.6.2. storage
14.6.3. memory
14.7. 函数
14.7.1. 构造方法
14.7.2. 定义函数
14.7.3. 函数返回值
14.7.4. 参数传递
14.7.5. 函数的例子
14.7.6. Fallback function
14.7.7. modifier
14.8. 事件
14.9. 面向对象编程
14.9.1. 可见性修饰符
14.9.2. 错误处理
14.9.3. interface 接口
14.9.4. library 库
14.9.4.1. 使用库来扩展数据类型
14.9.5. 继承
14.10. 合约调用
14.11. 合约接收 ETH
14.11.1. 调用 selfdestruct(msg.sender); 取出合约中的 ETH
14.11.2. 自动退款合约
14.11.3. 收款合约自动转账
14.11.4. 指定账号提取 ETH
14.12. 合约中实例化一个接口
14.13. 合约中实例化另一个合约
14.13.1. msg.sender 与 this 的区别
14.13.2. 地址格式
14.14. Solidity 安全问题
14.14.1. 整型溢出
14.15. solidity example
14.15.1. Voting
14.15.2. MetaCoin
14.15.3. Anonymous voting on Ethereum without a tally authority. Protocol from this paper
14.15.4. Ballot
14.15.5. Conference
15. Truffle v4.1.8 开发框架
15.1. 安装 Truffle
15.2. 开发环境
15.2.1. truffle develop
15.2.2. Ganache
15.2.3. testrpc
15.3. Truffle 快速入门
15.3.1. Ubuntu 环境
15.3.1.1. 启动开发环境
15.3.1.2. 创建项目
15.3.1.3. 创建合约
15.3.1.4. 配置 Truffle
15.3.1.5. 编译智能合约
15.3.1.6. migrate
15.3.2. Mac 环境
15.3.3. ERC20 代币部署
15.3.3.1. 合约文件
15.3.3.2. 部署文件
15.3.3.3. 编译部署
15.3.3.4. 合约调用
15.3.4. 高级ERC20代币合约
15.3.4.1. 部署合约
15.3.4.2. 控制台检查合约
15.3.4.3. 测试转账
15.3.4.4. 锁仓
15.3.4.5. 测试空投
15.4. Truffle 命令详解
15.4.1. version
15.4.2. Truffle console 控制台
15.4.3. create
15.4.3.1. contract 创建合约
15.4.3.2. test 创建单元测试
15.4.4. migrate
15.4.5. compile
15.4.6. test
15.4.7. watch
15.5. 合约开发
15.5.1. 构造方法
15.6. truffle console
15.6.1. 获取账号列表
15.6.2. 余额
15.6.3. 实例化合约
15.6.4. 访问 public 变量
15.6.5. 调用 public 函数
15.7. 测试
15.7.1. balanceOf
15.7.2. transfer
15.8. TRUFFLE BOXES
15.9. Zeppelin Solidity - OpenZeppelin is a library for writing secure Smart Contracts on Ethereum.
15.9.1. ERC20
15.9.2. ERC872
16. web3.js - 1.0.0
16.1. 开发环境
16.1.1. Ropsten 测试网
16.2. truffle-contract
16.3. 连接到以太坊客户端
16.3.1. http 方式
16.3.2. WebSocket 方式
16.3.3. IPC 方式
16.4. web3
16.4.1. version 显示web3版本号
16.5. web3.eth
16.5.1. 查看账号列表
16.5.2. 查询矿工账号
16.5.3. 获得余额
16.5.4. web3.eth.sendTransaction()
16.5.5. web3.eth.sendSignedTransaction() 私钥签名转账
16.5.5.1. 例子1
16.5.5.2. 例子2
16.5.6. web3.eth.getBlock() 获取区块
16.6. 账号管理
16.6.1. web3.eth.personal.unlockAccount()
16.7. 智能合约
16.7.1. 部署合约
16.7.2. 使用最佳手续费创建合约
16.7.3. 调用合约
16.7.4. event
16.8.
16.8.1.
16.8.2. 订阅 newBlockHeaders
16.8.3. 订阅 log
16.8.4. 订阅同步状态
16.9. utils
16.9.1. web3.utils.toWei()
16.9.2. 将 Wei 转换到指定单位
16.10. web3 编译合约
16.10.1. solc.compile
16.11. web3admin
16.12. ABI-encoded
16.13. 实用例子
16.13.1. 数据写入到区块链中
16.13.2. 编译部署智能合约
16.13.3. 部署合约
16.13.4. ERC20 Example
16.14. HD Wallet(Hierarchical Deterministic wallet)
16.14.1. 创建项目
16.14.2. 生成第二个钱包
16.14.3. Mnemonic Code Converter
16.14.4. HD Wallet 例子
16.14.5. 获得钱包地址和私钥
16.14.6. truffle.js 例子
16.14.7. Mnemonic To Seed 加密
16.14.8. 中文助记词
16.14.9. 代币转账
16.15. 从 .ethereum/keystore 文件导入私钥
16.16. Express + web3.js 实现简单网页钱包
16.16.1. 创建项目
16.16.2. 主程序 main.js
16.16.3. ABI 文件 abi/NKC.abi
16.16.4. 页面视图
16.16.4.1. views/account.ejs
16.16.4.2. views/balance.ejs
16.16.4.3. views/done.ejs
16.16.4.4. views/header.ejs
16.16.4.5. views/index.ejs
16.16.4.6. views/showbalance.ejs
16.16.4.7. views/transfer.ejs
16.16.5. 启动 Node 服务
17. web3j v3.4.0 - Jave Client
17.1. 安装命令行工具
17.1.1. Mac OS
17.1.2. 二进制包安装
17.2. 启动以太坊
17.3. Maven pom.xml 文件
17.4. Java 与 Solidity 数据类型映射关系
17.5. 常量
17.5.1. 默认 Gas
17.5.2. 默认 gaslimit gasprice
17.6. 连接到服务器获取版本号
17.7. 获得以太坊状态信息
17.7.1. 获取客户端版本
17.7.2. 协议版本
17.7.3. 查看当前区块
17.7.4. 同步状态
17.7.5. 挖矿状态
17.7.6. 矿工账号
17.7.7. 挖矿速度
17.7.8. Gas 价格
17.7.9. 评估GAS
17.7.10. 节点数量
17.8. 单位转换
17.8.1. GWEI to WEI
17.9. 账号管理
17.9.1. 获得账号列表
17.9.2. 获得账号信息
17.9.3. 创建账号
17.9.4. 解锁账号
17.10. Credentials
17.11. 交易
17.11.1. 获取余额
17.11.2. 通过 Keystore 转账
17.11.3. 通过私钥转账
17.11.4. 指定 gas 费用
17.11.5. 查询 Transaction Information
17.11.6. 交易结果查询
17.11.7. RawTransaction 编码与解码
17.12. 钱包
17.12.1. 创建钱包
17.12.2. 从钱包取出账号
17.12.3. 生成助记词钱包
17.12.4. 随机产生助记词
17.12.5. 导入 BIP39 钱包
17.13. 智能合约
17.13.1. 载入合约
17.14. ERC20合约
17.14.1. balanceOf
17.14.2. name
17.14.3. 合约转账
17.14.4. 完整的 ERC20 代币开发库
17.15. Infura
17.16. 助记词
17.16.1. 获取随机助记词
17.16.2. 助记词导出公钥和私钥
17.17. 过滤器 (Filter)
17.18. Subscription
17.18.1. 接收所有添加到区块链的新区块
17.18.2. 接收所有添加到区块链的新交易
17.18.3. 接收所有待处理的事务
17.18.4. 将区块块重放到当前的当前位置
17.18.5. 过滤主题
17.18.6. 停止订阅 Subscriptions
17.18.7.
17.19. 解锁账号
17.20. IBAN (International Bank Account Number)
17.21. Springboot with Ethereum (web3j)
17.21.1. Maven
17.21.2. application.properties
17.21.3. TestRestController
17.21.4. 测试
18. web3.py - A python interface for interacting with the Ethereum blockchain and ecosystem.
18.1. 安装 web3.py 开发环境
18.1.1. CentOS
18.1.2. MAC OS
18.2. 连接到以太坊节点
18.2.1. HTTP
18.2.2. IPC
18.2.3. Websocket
18.3. 交易
18.3.1. 发送 ETH
18.3.2. 签名发送 ETH
18.4. ERC20 代币合约
18.4.1. 签名发送ERC20代币
19. Ethereum iOS
20. Ethereum Developer APIs
20.1. API Keys
20.2. 账号
20.2.1. 余额
20.2.2. 查询区块
20.2.3. 查询区块
20.3. 查询交易
20.3.1. 检查合约执行状态
20.4. Geth/Parity Proxy APIs
20.4.1.
20.5. JSON RPC 原生交口调用
21. infura
21.1. Infura 3.0
21.2. websocket
21.2.1. 订阅 newBlockHeaders
21.3. 配置 Truffle
21.4. infura.io web3.js 开发
21.4.1. Web3 通过 infura 连接到 Ropsten 测试网络
21.4.2. 使用 truffle-hdwallet-provider 连接到 https://ropsten.infura.io
21.4.3. 转账
21.4.4. 执行合约
21.5. Infura IPFS
21.5.1. 上传文件
21.5.2. 查看文件
21.5.3. 下载文件
21.5.4. 创建目录
21.5.5. 查看文件状态
21.5.6. 查看IPFS版本号
21.6. Infura 2.0 (已经废弃)
21.6.1. 注册账号
21.6.2. infura 接口
21.6.2.1. jsonrpc
21.6.2.2. INFURA API
22. 以太坊案例
22.1. EtherDelta
22.2. 以太猫(CryptoKitties)
22.3. CryptoZombies
22.4. Augur Project
22.5. Golem
22.6. FirstBlood
22.7. Bancor
23. FAQ
23.1. Error: etherbase missing: etherbase address must be explicitly specified
23.2. FAQ
23.3. Error: authentication needed: password or unlock
23.4. 新增节点后不生效
23.5. Unhandled rejection Error: Returned error: The method personal_unlockAccount does not exist/is not available
23.6. Error: exceeds block gas limit
23.7. Migrations.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
23.8. Exception in thread "main" rx.exceptions.OnErrorNotImplementedException: Invalid response received: okhttp3.internal.http.RealResponseBody@6c25e6c4