Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | Github | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

部分 I. Ethereum 以太坊

目录

2. 以太坊
2.1. 名词解释
2.2. IBAN (International Bank Account Number)
2.2.1. iban:国际银行账号
2.2.2. 以太坊iban:新的国别码和BBAN编码方案
2.2.3. iban账号与以太坊地址的转换
2.2.4. 检查iban账号的有效性
2.3. 如何计算Gas手续费
2.4. 转出账号中所有 ETH,Ethereum Wallet 中的 Send everything 实现方法
2.5. (0/12 block confirmations)
2.6. 太坊账户管理 keystore 文件
2.6.1. 什么是 keystore 文件
2.6.2. keystore 文件的内容
2.6.3. keystore文件如何工作的?
2.6.3.1. 加密你的私钥
2.6.3.2. 用你的密码来保护它
2.6.3.3. 确认输入的密码是正确的
2.6.3.4. 将这三步结合起来
2.7. 批量转账遇到的问题与解决方案
2.8. 代币兑换
3. 以太坊私链入门
3.1. 软件安装与配置
3.1.1. Ubuntu
3.1.1.1. 安装 geth
3.1.1.2. 安装 solc
3.1.1.3. Node.js
3.1.2. CentOS 7
3.1.3. Windows
3.1.4. Mac OS
3.1.4.1. 安装 Node
3.1.4.2. Ethereum Wallet
3.1.5. 编译安装
3.1.6. Netkiller OSCM 一键安装
3.1.6.1. 1.8.10
3.1.6.2. 1.8.1
3.1.6.3. 1.8.10
3.1.7. 防止 geth 异常退出
3.2. 创世区块
3.2.1. 初始化创世区块
3.2.2. 创建主账号
3.2.3. 启动节点
3.2.4. 使用节点进行挖矿
3.2.4.1. 启动矿工开始挖矿
3.2.4.2. 停止挖矿
3.2.4.3. 查看所挖金额
3.2.5. 在创世链中制定矿工账号并为它充值
3.3. Blockchain explorer (区块链浏览器)
3.4. 单机多实例演示
3.4.1. 实例一
3.4.2. 实例二
3.4.3. 添加节点
3.4.4. 节点测试
3.5. 使用 pm2 启动以太坊
4. 以太坊网络
4.1. Ropsten 测试网
4.2. Rinkeby 测试网络
4.3. 火币测试网
4.4. BNB 测试网
5. geth v1.8.16 命令详解
5.1. api 相关参数
5.1.1. rpcapi
5.1.2. rpcaddr
5.2. 启动 Websocket 端口
5.3. 日志
5.4. 控制台
5.5. 连接控制台
5.5.1. 指定 geth.ipc 文件位置
5.5.2. IPC 方式连接
5.5.3. TCP 连接控制台
5.5.4. WebSocket 方式
5.6. 账号管理
5.6.1. 新建账号
5.6.2. 查看账号
5.6.3. 从私钥导入以太坊地址
5.7. 配置自动解锁账号
5.8. 运行JS
5.9. 节点管理
5.10. 启动挖矿
5.10.1. 挖矿线程数
5.10.2. 指定旷工账号
5.11. 运行智能合约
5.12. Ropsten测试网络
5.13. 静态节点
5.14. JavaScript Console
5.14.1. personal 管理
5.14.1.1. 创建账号
5.14.1.2. 列出账号
5.14.1.3. 解锁账号
5.14.2. eth 管理
5.14.2.1. 矿工账号
5.14.2.2. 余额
5.14.2.2.1. 单位转换
5.14.2.2.2. 一次检查所有账号余额
5.14.2.3. 解锁账号
5.14.2.4. 转账
5.14.2.5. 查看挂起的交易
5.14.2.6. 查看当前区块总数
5.14.2.7. 查看当前Gas价格
5.14.2.8. 评估执行花费的GAS
5.14.2.9. 查看区块信息
5.14.2.10. 返回交易信息
5.14.2.11. 返回交易收据
5.14.2.12. eth.syncing 同步状态
5.14.2.13. 查看智能合约编译器
5.14.3. web3
5.14.3.1. Ether币的基本单位
5.14.3.2. web3.toWei
5.14.3.3. web3.fromWei
5.14.4. admin 管理
5.14.4.1. 看看 networkid
5.14.4.2. 节点管理
5.14.4.2.1. 显示节点
5.14.4.2.2. 添加节点
5.14.4.2.3. 查看节点
5.14.4.2.4. networkid
5.14.5. miner 挖矿管理
5.14.5.1. 开始挖矿
5.14.5.2. 停止挖矿
5.14.5.3. 设置默认矿工账号
5.14.6. txpool 管理
5.14.6.1. txpool.status
5.14.7. net
5.14.7.1. 监听状态
6. Wallet
6.1. Ethereum Wallet(Mist)
6.1.1. Ethereum Wallet 工作原理
6.1.1.1. geth 启动 ropsten 测试网
6.1.1.2. 连接到本地测试网络
6.1.1.2.1. IPC
6.1.1.2.2. TCP
6.1.1.3. 控制台
6.1.2. 主网络
6.1.2.1. 主网启动参数
6.1.2.2. 进入主网
6.1.2.3. 以太坊区块浏览器
6.1.3. Ropsten 测试网络
6.1.3.1. 启动参数
6.1.3.2. 获得测试币
6.1.3.3. Etherscan
6.1.4. Rinkeby 测试网络
6.1.4.1. 测试网络
6.1.4.2. 获取测试网络上的以太币
6.1.4.3. 连接节点(Light node)
6.1.4.4. 区块链浏览器
6.1.5. Solo Network
6.1.6. 私网
6.1.7. 删除废弃的合约
6.1.8. 免安装,在线使用
6.1.9. 获得空投币
6.2. MetaMask
6.2.1. 测试网络
6.2.1.1. 获取测试网络上的以太币
6.2.2. mnemonic - Reveal seed words
6.2.3. 添加 Token 币种
6.2.4. MetaMask Vault Decryptor
6.2.5. 部署合约
6.3. MyEtherWallet
6.3.1. 执行ERC20智能合约函数
6.3.1.1. 查询余额
6.3.1.2. 销毁代币
6.3.1.3. 冻结账号
6.3.1.4. 增发代币
6.3.1.5. 锁仓
6.3.1.6. 批量打币
6.3.1.7. 修改合约管理者
6.3.1.8. 设置兑换比例
6.3.1.9. 空投设置
6.4. MyCrypto
6.5. imToken
6.5.1. 添加 Token
7. Token
7.1. Ethereum Wallet 创建ERC20代币合约
7.1.1. 合约文件
7.1.2. 部署合约
7.1.3. 代币转账
7.1.4. Verify And Publish
7.1.5. Links 链接更新
7.2. ERC20 Token Solidity 0.4.24
7.2.1. 构造方法
7.2.2. 官方规定 Method 方法
7.2.2.1. name
7.2.2.2. symbol
7.2.2.3. decimals
7.2.2.4. totalSupply
7.2.2.5. balanceOf
7.2.2.6. transfer
7.2.2.7. approve
7.2.2.8. transferFrom
7.2.2.9. allowance
7.2.3. 事件
7.2.3.1. Transfer
7.2.3.2. Approval
7.3. Netkiller Crowdsale Contract
7.3.1. Solidity 0.4.24
7.3.2. Solidity 0.4.21
7.4. ERC721 - Non-Fungible Tokens
7.4.1.
7.4.2. ERC721Metadata (可选)
7.4.3. ERC721Enumerable (可选)
7.5. 经典参考案例
7.5.1. Enterprise Token Ecosystem (ETE)
7.5.2. 积分链 (PE Chain)
7.5.3. Global star league chain (GSLC)
7.5.4. Kyber Network
7.6. 代币合约官方文档
7.6.1. ERC20
7.6.1.1. 基本Token 官方提供的例子
7.6.1.2. 官方提供的例子 ADVANCED TOKEN
7.6.1.3. Netkiller Basic Token 的例子
7.6.1.4. Netkiller ADVANCED TOKEN
7.6.1.5. 空投代币
7.6.1.5.1. 案例一
7.6.1.5.2. 案例二
7.6.1.5.3. 案例三
7.6.2. ERC223 token standard reference implementation.
7.6.3. ERC721 - Non-fungible Token Standard
7.6.4. ERC827 Token Standard (ERC20 Extension)
7.6.5. ERC875 for non fungible tokens and simple atomic swaps
7.6.6. ERC: Standard URI scheme with metadata, value and byte code
8. 智能合约语言 Solidity v0.5.0
8.1. Remix
8.1.1. NodeJS
8.1.2. Remix Project
8.1.3. Remix 桌面版
8.1.4. 输入数组
8.2. solc 命令
8.2.1. 使用 solc 编译 *.sol 代码
8.3. 智能合约入门演示
8.4. Helloworld Example
8.5. 数据类型
8.5.1. 数值型
8.5.1.1. 加 +,减 -,乘 *,除 / 运算演示
8.5.1.2. 求余 % 运算演示
8.5.1.3. 幂运算演示
8.5.1.4. 与 &,| 或,非 ~,异或 ^ 演示
8.5.1.5. 位移演示
8.5.2. 字符串
8.5.2.1. 获取字符串长度
8.5.3. 布尔(Booleans)
8.5.4. 字节类型
8.5.5. 数组
8.5.5.1. length
8.5.5.2. push() 方法
8.5.6. 枚举类型
8.5.7. 结构体
8.5.7.1. 函数返回Struct
8.5.8. address
8.5.8.1. payable
8.5.8.2. .value()
8.5.8.3. .gas()
8.5.9. mapping
8.6. 单位
8.6.1. 货币单位(Ether Units)
8.6.2. 时间单位(Time Units)
8.7. 变量
8.7.1. 全局变量
8.7.2. storage
8.7.3. memory
8.8. 函数
8.8.1. 构造方法
8.8.2. 定义函数
8.8.3. 函数返回值
8.8.4. 参数传递
8.8.5. 函数的例子
8.8.6. Fallback function
8.8.7. modifier
8.9. 事件
8.10. 面向对象编程
8.10.1. 可见性修饰符
8.10.2. 错误处理
8.10.3. interface 接口
8.10.4. library 库
8.10.4.1. 使用库来扩展数据类型
8.10.5. 继承
8.11. 合约调用
8.12. 合约接收 ETH
8.12.1. 调用 selfdestruct(msg.sender); 取出合约中的 ETH
8.12.2. 自动退款合约
8.12.3. 收款合约自动转账
8.12.4. 指定账号提取 ETH
8.13. 合约中实例化一个接口
8.14. 合约中实例化另一个合约
8.14.1. msg.sender 与 this 的区别
8.14.2. 地址格式
8.15. Solidity 安全问题
8.15.1. 整型溢出
8.16. solidity example
8.16.1. Voting
8.16.2. MetaCoin
8.16.3. Anonymous voting on Ethereum without a tally authority. Protocol from this paper
8.16.4. Ballot
8.16.5. Conference
8.17. Zeppelin Solidity - OpenZeppelin is a library for writing secure Smart Contracts on Ethereum.
8.17.1. 安装
8.17.2. ERC20
8.17.3. ERC872
9. Truffle v4.1.8 开发框架
9.1. 安装 Truffle
9.2. 开发环境
9.2.1. truffle develop
9.2.2. Ganache
9.2.3. testrpc
9.3. Truffle 快速入门
9.3.1. Ubuntu 环境
9.3.1.1. 启动开发环境
9.3.1.2. 创建项目
9.3.1.3. 创建合约
9.3.1.4. 配置 Truffle
9.3.1.5. 编译智能合约
9.3.1.6. migrate
9.3.2. Mac 环境
9.3.3. ERC20 代币部署
9.3.3.1. 合约文件
9.3.3.2. 部署文件
9.3.3.3. 编译部署
9.3.3.4. 合约调用
9.3.4. 高级ERC20代币合约
9.3.4.1. 部署合约
9.3.4.2. 控制台检查合约
9.3.4.3. 测试转账
9.3.4.4. 锁仓
9.3.4.5. 测试空投
9.4. Truffle 命令详解
9.4.1. version
9.4.2. Truffle console 控制台
9.4.3. create
9.4.3.1. contract 创建合约
9.4.3.2. test 创建单元测试
9.4.4. migrate
9.4.5. compile
9.4.6. test
9.4.7. watch
9.5. 合约开发
9.5.1. 构造方法
9.6. truffle console
9.6.1. 获取账号列表
9.6.2. 余额
9.6.3. 实例化合约
9.6.4. 访问 public 变量
9.6.5. 调用 public 函数
9.7. 测试
9.7.1. balanceOf
9.7.2. transfer
9.8. TRUFFLE BOXES
10. web3.js - 1.0.0
10.1. 开发环境
10.1.1. Ropsten 测试网
10.2. truffle-contract
10.3. 连接到以太坊客户端
10.3.1. http 方式
10.3.2. WebSocket 方式
10.3.3. IPC 方式
10.4. web3
10.4.1. version 显示web3版本号
10.5. web3.eth
10.5.1. 查看账号列表
10.5.2. 查询矿工账号
10.5.3. 获得余额
10.5.4. web3.eth.sendTransaction()
10.5.5. web3.eth.sendSignedTransaction() 私钥签名转账
10.5.5.1. 例子1
10.5.5.2. 例子2
10.5.6. web3.eth.getBlock() 获取区块
10.6. 账号管理
10.6.1. web3.eth.personal.unlockAccount()
10.7. 智能合约
10.7.1. 部署合约
10.7.2. 使用最佳手续费创建合约
10.7.3. 调用合约
10.7.4. event
10.8.
10.8.1.
10.8.2. 订阅 newBlockHeaders
10.8.3. 订阅 log
10.8.4. 订阅同步状态
10.9. utils
10.9.1. web3.utils.toWei()
10.9.2. 将 Wei 转换到指定单位
10.10. web3 编译合约
10.10.1. solc.compile
10.11. web3admin
10.12. ABI-encoded
10.13. 实用例子
10.13.1. 数据写入到区块链中
10.13.2. 编译部署智能合约
10.13.3. 部署合约
10.13.4. ERC20 Example
10.14. HD Wallet(Hierarchical Deterministic wallet)
10.14.1. 创建项目
10.14.2. 生成第二个钱包
10.14.3. Mnemonic Code Converter
10.14.4. HD Wallet 例子
10.14.5. 获得钱包地址和私钥
10.14.6. truffle.js 例子
10.14.7. Mnemonic To Seed 加密
10.14.8. 中文助记词
10.14.9. 代币转账
10.15. 从 .ethereum/keystore 文件导入私钥
10.16. Express + web3.js 实现简单网页钱包
10.16.1. 创建项目
10.16.2. 主程序 main.js
10.16.3. ABI 文件 abi/NKC.abi
10.16.4. 页面视图
10.16.4.1. views/account.ejs
10.16.4.2. views/balance.ejs
10.16.4.3. views/done.ejs
10.16.4.4. views/header.ejs
10.16.4.5. views/index.ejs
10.16.4.6. views/showbalance.ejs
10.16.4.7. views/transfer.ejs
10.16.5. 启动 Node 服务
11. web3j v3.4.0 - Jave Client
11.1. 安装命令行工具
11.1.1. Mac OS
11.1.2. 二进制包安装
11.2. 启动以太坊
11.3. Maven pom.xml 文件
11.4. Java 与 Solidity 数据类型映射关系
11.5. 常量
11.5.1. 默认 Gas
11.5.2. 默认 gaslimit gasprice
11.6. 连接到服务器获取版本号
11.7. 获得以太坊状态信息
11.7.1. 获取客户端版本
11.7.2. 协议版本
11.7.3. 查看当前区块
11.7.4. 同步状态
11.7.5. 挖矿状态
11.7.6. 矿工账号
11.7.7. 挖矿速度
11.7.8. Gas 价格
11.7.9. 评估GAS
11.7.10. 节点数量
11.8. 单位转换
11.8.1. GWEI to WEI
11.9. 账号管理
11.9.1. 获得账号列表
11.9.2. 获得账号信息
11.9.3. 创建账号
11.9.4. 解锁账号
11.10. Credentials
11.11. 交易
11.11.1. 获取余额
11.11.2. 通过 Keystore 转账
11.11.3. 通过私钥转账
11.11.4. 指定 gas 费用
11.11.5. 查询 Transaction Information
11.11.6. 交易结果查询
11.11.7. RawTransaction 编码与解码
11.12. 钱包
11.12.1. 创建钱包
11.12.2. 从钱包取出账号
11.12.3. 生成助记词钱包
11.12.4. 随机产生助记词
11.12.5. 导入 BIP39 钱包
11.13. 智能合约
11.13.1. 载入合约
11.14. ERC20合约
11.14.1. balanceOf
11.14.2. name
11.14.3. 合约转账
11.14.4. 完整的 ERC20 代币开发库
11.15. Infura
11.16. 助记词
11.16.1. 获取随机助记词
11.16.2. 助记词导出公钥和私钥
11.17. 过滤器 (Filter)
11.18. Subscription
11.18.1. 接收所有添加到区块链的新区块
11.18.2. 接收所有添加到区块链的新交易
11.18.3. 接收所有待处理的事务
11.18.4. 将区块块重放到当前的当前位置
11.18.5. 过滤主题
11.18.6. 停止订阅 Subscriptions
11.18.7.
11.19. 解锁账号
11.20. IBAN (International Bank Account Number)
11.21. Springboot with Ethereum (web3j)
11.21.1. Maven
11.21.2. application.properties
11.21.3. TestRestController
11.21.4. 测试
12. web3.py - A python interface for interacting with the Ethereum blockchain and ecosystem.
12.1. 安装 web3.py 开发环境
12.1.1. CentOS
12.1.2. MAC OS
12.2. 连接到以太坊节点
12.2.1. HTTP
12.2.2. IPC
12.2.3. Websocket
12.3. 交易
12.3.1. 发送 ETH
12.3.2. 签名发送 ETH
12.4. ERC20 代币合约
12.4.1. 签名发送ERC20代币
13. Ethereum iOS
14. Ethereum Developer APIs
14.1. API Keys
14.2. 账号
14.2.1. 余额
14.2.2. 查询区块
14.2.3. 查询区块
14.3. 查询交易
14.3.1. 检查合约执行状态
14.4. Geth/Parity Proxy APIs
14.4.1.
14.5. JSON RPC 原生交口调用
15. infura
15.1. Infura 3.0
15.2. websocket
15.2.1. 订阅 newBlockHeaders
15.3. 配置 Truffle
15.4. infura.io web3.js 开发
15.4.1. Web3 通过 infura 连接到 Ropsten 测试网络
15.4.2. 使用 truffle-hdwallet-provider 连接到 https://ropsten.infura.io
15.4.3. 转账
15.4.4. 执行合约
15.5. Infura IPFS
15.5.1. 上传文件
15.5.2. 查看文件
15.5.3. 下载文件
15.5.4. 创建目录
15.5.5. 查看文件状态
15.5.6. 查看IPFS版本号
15.6. Infura 2.0 (已经废弃)
15.6.1. 注册账号
15.6.2. infura 接口
15.6.2.1. jsonrpc
15.6.2.2. INFURA API
16. 以太坊案例
16.1. EtherDelta
16.2. 以太猫(CryptoKitties)
16.3. CryptoZombies
16.4. Augur Project
16.5. Golem
16.6. FirstBlood
16.7. Bancor
17. FAQ
17.1. Error: etherbase missing: etherbase address must be explicitly specified
17.2. FAQ
17.3. Error: authentication needed: password or unlock
17.4. 新增节点后不生效
17.5. Unhandled rejection Error: Returned error: The method personal_unlockAccount does not exist/is not available
17.6. Error: exceeds block gas limit
17.7. Migrations.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
17.8. Exception in thread "main" rx.exceptions.OnErrorNotImplementedException: Invalid response received: okhttp3.internal.http.RealResponseBody@6c25e6c4
17.9. 旧版本 Remix(browser-solidity) 本地安装