shownb / shownb.github.com

shownb.github.io
shownb.github.io
5 stars 1 forks source link

区块链 #19

Open shownb opened 6 years ago

shownb commented 6 years ago

从一个地址发送token到另一个地址有两种办法。tranfer()函数可以从信息发送者那里直接转一些token到另一个地址。记住,人们不会查验接收地址,因此确保接收者按预期的方式行动是发送者的责任。

第一步,一个token持有者给另一个地址(常常是一个智能合约)批准从本地转出一个最大特定数量的token,也就是所谓的配额(allowence)。Token持有者使用approve()来提供这些信息。

allowance()函数提供了允许从一个给定地址提取到另一个给定地址的token的数量。

ERC-20定义了在合约采取了相关行动的时候,两类事件是必须被触发的。第一类事件是Transfer(),就是放出从一个地址转移到另一个地址的token转移的细节。第二类事件是Approval(),就是放出从一个地址许可转移token到另一个地址的细节。这些可以被用来跟踪地址余额和配额的变更,而无需查询区块链。

approve 批准 同意 approve() 的操作是授权第三方(在这个例子中是服务合约)从发送者账户转移代币,然后通过 transferFrom() 函数来执行第三方的转移操作。

name

返回ERC20代币的名字,例如"My test token"。

symbol

返回代币的简称,例如:MTT,这个也是我们一般在代币交易所看到的名字。

decimals

返回token使用的小数点后几位。比如如果设置为3,就是支持0.001表示。

totalSupply

返回token的总供应量

balanceOf

返回某个地址(账户)的账户余额

transfer

从代币合约的调用者地址上转移 _value的数量token到的地址 _to,并且必须触发Transfer事件。

transferFrom

从地址 _from发送数量为 _value的token到地址 _to,必须触发Transfer事件。

transferFrom方法用于允许合同代理某人转移token。条件是from账户必须经过了approve。这个后面会举例说明。

approve

允许 _spender多次取回您的帐户,最高达 _value金额。 如果再次调用此函数,它将以 _value覆盖当前的余量。

allowance

返回 _spender仍然被允许从 _owner提取的金额。

Send erc20 tokens using the json-rpc api https://ethereum.stackexchange.com/questions/26625/send-erc20-tokens-using-the-json-rpc-api

========================= https://blog.sodroid.com/2017/11/05/用Golang实现以太坊代币转账/

以太坊go-ethereum签名部分源码解析

geth部分命令

/root/go-ethereum/build/bin/geth --fast --cache=2048 --maxpeers 1000 console 2 >> eth.log
>eth.syncing
>eth.account
>net.peerCount
/root/go-ethereum/build/bin/geth --fast --cache=2048 --maxpeers 1000 --rpcapi eth,web3 --rpc console 2>> /dev/null

区块链导入/导出 以二进制格式导出区块链:

geth export <filename>

或者,如果要随时间备份部分链,可以指定第一个和最后一个块。例如,要备份第一个时代:

geth export <filename> 0 29999

请注意,在备份部分链时,文件将被附加而不是被截断。 导入二进制格式的区块链导出:

geth import <filename>

p2p聊天室 https://github.com/nkbai/go-ethereum-example/tree/master/p2pmessage

还有下载所有合约代码

有用的项目 https://github.com/hunterlong/tokenbalance 查看token余额的项目

token排名 https://blockspur.com/ethereum_contracts/transactions

how-to-get-every-contract-in-ethereum https://medium.com/@xeenych/how-to-get-every-contract-in-ethereum-c5b97f230e9

获取tokens所有持有人地址

You have to subscribe to all Transfer events and store the source and destination address. That will get you a list of all token holders. After that you can use balanceOf() to query the token balance of each account.