---
# System prepended metadata

title: 以太坊交互
tags: [区块链, ETH]

---

# 以太坊交互

## Clients, tools, dapp browsers, wallets and other projects
https://github.com/ethereum/wiki/wiki/Clients,-tools,-dapp-browsers,-wallets-and-other-projects

## account,public key, private key, keystore
https://theethereum.wiki/w/index.php/Accounts,_Addresses,_Public_And_Private_Keys,_And_Tokens

## 以太坊文档整理
https://www.jianshu.com/p/3445ff08229a

## geth开启测试网
https://ethereum.stackexchange.com/questions/3514/how-to-call-a-contract-method-using-the-eth-call-json-rpc-api

## 管理api
https://github.com/ethereum/go-ethereum/wiki/Management-APIs


## 一般api
https://github.com/ethereum/wiki/wiki/JSON-RPC
请求示例：
```
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' http://localhost:8545
```

curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method": "admin_startRPC", "params": ["0.0.0.0", 8545],"id":74}' http://localhost:8545



## 以太坊networkid
0: Olympic, Ethereum public pre-release testnet
1: Frontier, Homestead, Metropolis, the Ethereum public main network
1: Classic, the (un)forked public Ethereum Classic main network, chain ID 61
1: Expanse, an alternative Ethereum implementation, chain ID 2
2: Morden, the public Ethereum testnet, now Ethereum Classic testnet
3: Ropsten, the public cross-client Ethereum testnet
4: Rinkeby, the public Geth PoA testnet
8: Ubiq, the public Gubiq main network with flux difficulty chain ID 8
42: Kovan, the public Parity PoA testnet
77: Sokol, the public POA Network testnet
99: Core, the public POA Network main network
100: xDai, the public MakerDAO/POA Network main network
401697: Tobalaba, the public Energy Web Foundation testnet
7762959: Musicoin, the music blockchain
61717561: Aquachain, ASIC resistant chain
[Other]: Could indicate that your connected to a local development test network.



## nxt api(第三方)
https://nxtwiki.org/wiki/The_Nxt_API

## event watcher
https://blog.joincivil.com/interacting-with-ethereum-smart-contract-events-in-go-with-the-civil-events-crawler-7db484a78d5f

## etherscan查ETH转账信息（5 requests/second）
http://api-ropsten.etherscan.io/api?module=account&action=txlist&address=0x1ffc4d9156da9a622dafac9e60afb92a77a4c185&startblock=0&endblock=99999999&sort=asc&apikey=EI8E9QTV3M22MXRUEEV9TWWK33JG99DUQC

## etherscan查token转账信息（5 requests/second）
http://api-ropsten.etherscan.io/api?module=account&action=tokentx&address=0x1ffc4d9156da9a622dafac9e60afb92a77a4c185&startblock=0&endblock=999999999&sort=asc&apikey=HT713H5357WVPBNURMZGU1VAZGJ14GVNI8

## etherscan查token转账信息
https://rinkeby.etherscan.io/apis#logs
对应的rpc接口是这个 [eth_getLogs](https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getlogs)
core/types里面定义了数据结构

github issue link: https://github.com/ethereum/go-ethereum/issues/2085

## json rpc 2.0规范
https://www.jsonrpc.org/specification

## keystore和private key的区别
https://github.com/MyEtherWallet/knowledge-base/blob/master/src/content/private-keys-passwords/difference-beween-private-key-and-keystore-file.md

## 使用rpc调用geth server
http://nxtwiki.org/wiki/The_Nxt_API#Get_Account_Transactions
## jsonrpc调用示例
curl -X POST -H "Content-Type:application/json" -d '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}' http://127.0.0.1:8545

## 生成钱包（命令行）
``` bash
Shimings-Mini:~ Shiming$ geth account new
INFO [08-22|11:17:46.024] Maximum peer count                       ETH=25 LES=0 total=25
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase: 
Repeat passphrase: 
Address: {59fcaa69241cd8ac665dae468ca444c88166ed97}
```

## golang生成公私秘钥对
https://ethereum.stackexchange.com/questions/39900/create-ethereum-account-using-golang

``` go
package main

import (
 	"github.com/ethereum/go-ethereum/crypto"
 	"encoding/hex"
	"fmt"
)

// Create an account
func main(){
	generateEthAccount()

}

func generateEthAccount(){
	// Create an account
	key, err := crypto.GenerateKey()

	// Get the address
	address := crypto.PubkeyToAddress(key.PublicKey).Hex()
	//  0x8ee3333cDE801ceE9471ADf23370c48b011f82a6

	// Get the private key
	privateKey := hex.EncodeToString(key.D.Bytes())
	// 05b14254a1d0c77a49eae3bdf080f926a2df17d8e2ebdf7af941ea001481e57f

	fmt.Printf("the key is: %s\n the err is: %s\n the address is %s\n the private key is %s\n", key,err,address,privateKey)
}

```

## infura rpc
Main Ethereum Network
https://mainnet.infura.io/aikxiYGH1Yoq8PVbKNB6 

Test Ethereum Network (Ropsten)
https://ropsten.infura.io/aikxiYGH1Yoq8PVbKNB6 

## 查询地址余额
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getbalance

0x3d089089313e11cc78ba170e6739a3962f00149e

``` json
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xc94770007dda54cF92009BFF0dE90c06F603a09f", "latest"],"id":1}' https://ropsten.infura.io/aikxiYGH1Yoq8PVbKNB6

// Result
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x0234c8a3397aab58" // 158972490234375000
}
```

## abigen
abigen --sol helloworld.sol --pkg main --out helloworld.go


## go和合约交互
https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts

## github @vincentserpoul 邮件沟通后推荐的书
https://github.com/miguelmota/ethereum-development-with-go-book

## 判断交易是否成功
https://ethereum.stackexchange.com/questions/6002/transaction-status/6003#6003

## 校验以太坊地址
http://blog.luoyuanhang.com/2018/04/17/eth-basis-accounts-address-pubkey-prikey/

## 获得geth的配置信息
```
geth dumpconfig
```

## 生成geth配置文件
https://ethereum.stackexchange.com/questions/29063/geth-config-file-documentation/29246#29246

## ETH 节点搭建相关信息
```
geth removedb --datadir data

geth --syncmode=full --datadir /mnt/disk2/ethereum/mainnet --rpc --rpcapi eth,net,web3,admin,miner,debug,personal,txpool,db,shh --rpcaddr 127.0.0.1 --rpcport 8543 --port 30303(加上--rpccorsdomain *就是启动不了)

rinkeby  ropsten 两个不同的测试网
```

###### tags: `区块链` `ETH`