EOS测试账号
节点:192.168.50.159,
其中nodeosd相关API请访问 http://192.168.50.159:8888,
Wallet相关API请访问 http://192.168.50.159:3000
##1.测试网
http://jungle.cryptolions.io/#accountInfo
##2.测试API
https://github.com/CryptoLions/EOS-Jungle-Testnet
##2.测试账号
liulian12345
Description | EOS Token Sale Claim Key |
---|---|
Public key | EOS7LAzv5dbrzprL8DZuHYMKfTjQQ9AUXPAKzQfSFUed1GoJuTXmd |
Private key | 5Hsk6wB2MPqGPrU53jSVGHm3uvoqWJk3rCrnkGzEGc7HrH28n7t |
localhost
Private key: 5JUJHBJF18Qs8WMdXnb5488AFzdAZcfKZ5QAX1srMLWa62rsL4e
Public key: EOS6BQZmWhPKZLVg4YDcR6KdrYb1dqjDAWxyGPHRTD6mpqJ1dACAp
Private key: 5KXZjxLz4qczfCGmWYUzxhiKyRN1eYaGCRZaT1hHAFJs9xsmCKS
Public key: EOS5uLxwJQgpEJteBxBTKiqWnyWiJTQAzAqx71M5AuMZ917oMv4g4
Jungle:
测试网络账号创建的block: 13658485
{
"timestamp": "2018-09-10T09:33:29.000",
"producer": "funnyhamster",
"confirmed": 0,
"previous": "00d06974a6485b5e6c80d804313d6c0058870848f103735fb24ae63851a61f66",
"transaction_mroot": "00eb3fbea28360f5ab26cae9cf50c081baf5579800aa6062f059808ad9b44d7a",
"action_mroot": "10a2e5ea43847603f2d68bc5b403eea5ec744b70d38ff1d73e859fbe9413e6c6",
"schedule_version": 217,
"new_producers": null,
"header_extensions": [],
"producer_signature": "SIG_K1_K26xvdaxUhQcE6Cga1fQfDLKxVYKpAG9nNk8isA4Pby8ZH2Jp8y8Z6ki8p3ZHAvuBFTJDrNTAW6va9Xbd1R7E8DoosQdXE",
"transactions": [
{
"status": "executed",
"cpu_usage_us": 7238,
"net_usage_words": 43,
"trx": {
"id": "929ecaca3aa6aa09a515239ff79e78b4df62bf87809a45a7baf2848696c3f094",
"signatures": [
"SIG_K1_KVJz9woQUmHRCot6prUeeY3H8vjZBSStUhefQhrmzsCDKS8MkqYV2ANgfPeSpdEgmAnqX39WnKraCGiwJYedzKkbu5nBnS"
],
"compression": "none",
"packed_context_free_data": "",
"context_free_data": [],
"packed_trx": "e03a965b2868e3b6720100000000030000000000ea305500409e9a2264b89a0150c810611a17b58b00000000a8ed32326650c810611a17b58b208269a69996b1ca01000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d7230100000001000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d723010000000000000000ea3055000000004873bd3e0150c810611a17b58b00000000a8ed32322050c810611a17b58b208269a69996b1caa08601000000000004454f53000000000000000000ea305500003f2a1ba6a24a0150c810611a17b58b00000000a8ed32323150c810611a17b58b208269a69996b1caa08601000000000004454f5300000000a08601000000000004454f53000000000100",
"transaction": {
"expiration": "2018-09-10T09:35:28",
"ref_block_num": 26664,
"ref_block_prefix": 24295139,
"max_net_usage_words": 0,
"max_cpu_usage_ms": 0,
"delay_sec": 0,
"context_free_actions": [],
"actions": [
{
"account": "eosio",
"name": "newaccount",
"authorization": [
{
"actor": "liulian12345",
"permission": "active"
}
],
"data": {
"creator": "liulian12345",
"name": "testhahaha12",
"owner": {
"threshold": 1,
"keys": [
{
"key": "EOS6BQZmWhPKZLVg4YDcR6KdrYb1dqjDAWxyGPHRTD6mpqJ1dACAp",
"weight": 1
}
],
"accounts": [],
"waits": []
},
"active": {
"threshold": 1,
"keys": [
{
"key": "EOS6BQZmWhPKZLVg4YDcR6KdrYb1dqjDAWxyGPHRTD6mpqJ1dACAp",
"weight": 1
}
],
"accounts": [],
"waits": []
}
},
"hex_data": "50c810611a17b58b208269a69996b1ca01000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d7230100000001000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d72301000000"
},
{
"account": "eosio",
"name": "buyram",
"authorization": [
{
"actor": "liulian12345",
"permission": "active"
}
],
"data": {
"payer": "liulian12345",
"receiver": "testhahaha12",
"quant": "10.0000 EOS"
},
"hex_data": "50c810611a17b58b208269a69996b1caa08601000000000004454f5300000000"
},
{
"account": "eosio",
"name": "delegatebw",
"authorization": [
{
"actor": "liulian12345",
"permission": "active"
}
],
"data": {
"from": "liulian12345",
"receiver": "testhahaha12",
"stake_net_quantity": "10.0000 EOS",
"stake_cpu_quantity": "10.0000 EOS",
"transfer": 1
},
"hex_data": "50c810611a17b58b208269a69996b1caa08601000000000004454f5300000000a08601000000000004454f530000000001"
}
],
"transaction_extensions": []
}
}
}
],
"block_extensions": [],
"id": "00d06975eb6fb6c7c281c3f68819489c27a2f876e3820f8bc37bb09f09f6d4ef",
"block_num": 13658485,
"ref_block_prefix": 4140007874
}
区块链开发之确定性算法bip32,bip39,bip44
##引言
随着比特币区块链的发展,人们已经不满足于,只有一个账号的情况,有些人会有好几个账户,但是这就出现一个问题,我有几个账号,就要保存几个私钥,这就特别麻烦和不友好,所以,就出现了bip32确定性算法,该算法可以让你只有同一个种子,就可以生成无数个私钥和地址,这就大大方便了用户的使用。但是这个种子,也不较长,用户使用起来也比较繁琐,这就出现了bip39,它是使用助记词的方式,生成种子的,这样用户只需要记住,12个单词(3,6,9,12,15,18,21,24支持这些单词数,目前使用较广泛的是12和24),这就有大大提高了用户使用的便利性。又随着区块链发展,市面上出现了很多币种,之前的确定性算法只是针对比特币的,也就是说只支持一种币种,用户想用同一个种子,管理不同币种,这就促使了bip39协议的出现,它是基于bip32协议的,它给bip32的路径,赋予了不同的意义,很好的解决了多币种,多地址的问题。
协议官方链接
如果想详细的了解这些协议,请查看官方文档(解析的最清楚)
big32:https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
bip39:https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
bip44:https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
验证网站:https://iancoleman.io/bip39/
#BIP44简介
##路径级别
bip44给bip32定义了5各级别
m / purpose’ / coin_type’ / account’ / change / address_index
##m是固定的
Purpose也是固定的,值为44(或者 0x8000002C)
##Coin type
这个代表的是币种,0代表比特币,1代表比特币测试链,60代表以太坊
完整的币种列表地址:https://github.com/satoshilabs/slips/blob/master/slip-0044.md
##Account
代表这个币的账户索引,从0开始
##Change
常量0用于外部链,常量1用于内部链(也称为更改地址)。外部链用于在钱包外可见的地址(例如,用于接收付款)。内部链用于在钱包外部不可见的地址,用于返回交易变更。 (所以一般使用0)
##address_index
这就是地址索引,从0开始,代表生成第几个地址,并且官方建议,每个account下的address_index不要超过20
###示例
coin account | change | address | path |
---|---|---|---|
Bitcoin | first | external | first |
Bitcoin | first | external | second |
Bitcoin | first | internal | second |
Bitcoin | Testnet | first | external |
Bitcoin | Testnet | second | external |
ETH ERC20的相关信息
##pyhton script
import json
import web3
from web3 import Web3, HTTPProvider
my = "0xD551234Ae421e3BCBA99A0Da6d736074f22192FF"
eos_contract_address = "0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0"
contract_source_code='''
[{
"type":"function",
"name":"balanceOf",
"constant":true,
"payable":false,
"inputs":[{"name":"","type":"address"}],
"outputs":[{"name":"","type":"uint256","value":"0"}]
}]
'''
abi = json.loads(contract_source_code)
web3 = Web3(HTTPProvider('http://localhost:8545') )
#web3 = Web3(HTTPProvider('https://mainnet.infura.io/<key>') )
source_code = web3.eth.getCode(eos_contract_address)
contract = web3.eth.contract(abi=abi, address=eos_contract_address)
contract.call().balanceOf(my)
##erc20 contract abi
[
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [],
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
},
{
"name": "_extraData",
"type": "bytes"
}
],
"name": "approveAndCall",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "address"
}
],
"name": "spentAllowance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"type": "function"
},
{
"inputs": [
{
"name": "initialSupply",
"type": "uint256"
},
{
"name": "tokenName",
"type": "string"
},
{
"name": "decimalUnits",
"type": "uint8"
},
{
"name": "tokenSymbol",
"type": "string"
}
],
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
}
]
##ERC20如eos转账demo
http://www.yaozihao.cn/2017/12/08/697/
from web3 import Web3, HTTPProvider
from web3.contract import ConciseContract
import json
web3 = Web3(HTTPProvider('http://localhost:8545'))
print(web3.eth.blockNumber)
tx='0xb1ea3885a25efa295837c287560fe4c137c1bcd3718720330eb68d7f96a5479e'
web3.eth.getTransaction(tx)
web3.eth.getTransactionReceipt(tx)
exit(0)
web3.eth.defaultAccount = '0x00B113795f1aA12EE361adC6D281392802d0e025'
EIP20_ABI_str = '[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"mintTimelocked","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]'
EIP20_ABI = json.loads(EIP20_ABI_str)
token_contract_address = '0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0'
token = web3.eth.contract(
token_contract_address,
abi=EIP20_ABI,
ContractFactoryClass=ConciseContract,
)
totalSupply = token.totalSupply()
balance = token.balanceOf('0x00B113795f1aA12EE361adC6D281392802d0e025')
tx = token.transfer(
'0x00845daA689b1374ecAf4CfEcfBfc86D41ec7735',
web3.toWei(2,"ether"),
transact={'from':'0x00B113795f1aA12EE361adC6D281392802d0e025'})
tx = '0xb3b82923d8d9b5d28fbab7f7281704f033362ac9f293e6638227efb44ff85499'
web3.eth.getTransaction(tx)
web3.eth.getTransactionReceipt(tx)
web3.eth.getTransactionCount(web3.eth.coinbase)
web3.eth.getTransactionCount('0x00B113795f1aA12EE361adC6D281392802d0e025')
Copyright © 2015 Powered by MWeb, 豫ICP备09002885号-5