Git Product home page Git Product logo

heco-chain's Introduction

This is a Next.js project bootstrapped with create-next-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Inter, a custom Google Font.

heco-chain's People

Contributors

acud avatar arachnid avatar cjentzsch avatar cubedro avatar debris avatar fjl avatar gavofyork avatar gballet avatar gluk256 avatar holiman avatar holisticode avatar janos avatar jpeletier avatar jsvisa avatar karalabe avatar ligi avatar mariusvanderwijden avatar meowsbits avatar mikoto10001 avatar nanyan avatar nolash avatar nonsense avatar obscuren avatar renaynay avatar rjl493456442 avatar tgerring avatar ucwong avatar vbuterin avatar zelig avatar zsfelfoldi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

heco-chain's Issues

使用GO语言直接与geth交互,一个错误,请求帮助

使用GO语言直接与geth交互
func main() {
// Create an IPC based RPC connection to a remote node and instantiate a contract binding
conn, err := ethclient.Dial("http://127.0.0.1:8545")
if err != nil {
log.Fatalf("Failed to connect to the Ethereum client: %v", err)
}
token, err := NewToken(common.HexToAddress("0x21e6fc92f93c8a1bb41e2be64b4e1f88a54d3576"), conn)
if err != nil {
log.Fatalf("Failed to instantiate a Token contract: %v", err)
}
// Create an authorized transactor and spend 1 unicorn
auth, err := bind.NewTransactor(strings.NewReader(key), "my awesome super secret password")
if err != nil {
log.Fatalf("Failed to create authorized transactor: %v", err)
}
tx, err := token.Transfer(auth, common.HexToAddress("0x0000000000000000000000000000000000000000"), big.NewInt(1))
if err != nil {
log.Fatalf("Failed to request token transfer: %v", err)
}
fmt.Printf("Transfer pending: 0x%x\n", tx.Hash())
}

==================无法交互====报错如下:

[root@iZt4n20guljct01a322mi6Z src]# go run main.go token.go
2021/07/15 10:21:06 Failed to request token transfer: net/http: nil Context

感谢帮助!

get 'can't load package: package .: no Go files in /' when 'make geth-linux-amd64'

Checking for required docker image karalabe/xgo-latest... found.
Cross compiling ....
Building locally ....
Compiling for linux/amd64...
can't load package: package .: no Go files in /
2021/02/09 20:03:35 Failed to cross compile package: exit status 1.
util.go:45: exit status 1
exit status 1
make: *** [Makefile:74:geth-linux-amd64] error 1

[deployment] Different version in mainnet and testnet

I don't if that is important, but there are Different version in mainnet and testnet: 1.1.0 vs 1.1.3

testnet
Geth/v1.1.0-unstable-e4513621-20210629/linux-amd64/go1.13.4
mainnet
Geth/v1.1.3-stable-67a191de/linux-amd64/go1.13.4

I think testnet should be the same or newer than mainnet, not vice versa.

Update geth fork

Hi there,

Any plans to update to geth 1.10? Snapshot feature is very interesting to be able to prune data.

Thanks

make geth error;

image
image

centos8 该怎么解决这个问题?是go的版本不对吗

How to sync the full node by geth?

Hello,

From the instruction: compile-and-run, I have compiled it, but I can not find the sync instruction.
How to sync the full node by the compiled geth?
Thanks.

Note:
I have synced the node by geth --datadir ./node --pprofaddr 0.0.0.0 --metrics --pprof

upgrade the node to 1.2.0-stable , but has a error, Fatal: /data/blockdata/heco/conf/config.toml, line 3: field 'DiscoveryURLs' is not defined in ethconfig.Config, see https://godoc.org/github.com/ethereum/go-ethereum/eth/ethconfig#Config for available fields,

System information

Geth version: geth version
OS & Version: Windows/Linux/OSX
Commit hash : (if develop)

Expected behaviour

Actual behaviour

Steps to reproduce the behaviour

Backtrace

[backtrace]

When submitting logs: please submit them as text and not screenshots.

It will loss a large number of blocks when I reboot the geth

Geth version: 1.1.1-stable
OS & Version: Linux

Hi, It will loss a large number of blocks when I reboot the geth. Like this(I catch the state of syncing after reboot):

eth.syncing
{
currentBlock: 7881263,
highestBlock: 7970698,
knownStates: 190833495,
pulledStates: 190833495,
startingBlock: 7970681
}

I think the 'startingBlock' is right, it is the block number where the moment I kill the geth process, but the 'currentBlock' is wrong, and I find the problem also exist in old geth version. How can I repair this problem? Thank you!

Signature from Ledger Nano X will be marked as invalid transaction

Hello,

I am a user of Hecochain, and already deposit some HT into my Hecochain address.

However, when I am sending transactions on my Ledger Nano X to transfer the HT to other addresses, it always says "invalid signature". Such a situation has last for at least 5 days, and my HT is "freezed" in my Hecochain address.

You can see the picture below, I am sure the signature is signed by the corresponding address.
image

I have reported this issue in WeChat, but no one is replying to me. If you do not trust me, please have a try on your own.

Please help me if possible.

私链同步节点失败

INFO [03-06|20:20:00.648] Imported new block receipts count=192 elapsed=1.852ms number=1080 hash="48b4d9…3a56bf" age=21h28m37s size=768.00B
WARN [03-06|20:20:00.714] Node data write error err="trie node d65b76…29af74 failed with all peers (2 tries, 2 peers)"
INFO [03-06|20:20:00.734] Imported new block headers count=192 elapsed=18.558ms number=1272 hash="64bed8…4e8697" age=21h12m37s
INFO [03-06|20:20:00.735] Loaded most recent local header number=1272 hash="64bed8…4e8697" td=2545 age=21h12m37s
INFO [03-06|20:20:00.735] Loaded most recent local full block number=0 hash="1c227b…f2fc52" td=1 age=5mo1w2d
INFO [03-06|20:20:00.735] Loaded most recent local fast block number=0 hash="1c227b…f2fc52" td=1 age=5mo1w2d
INFO [03-06|20:20:00.735] Loaded last fast-sync pivot marker number=16473
WARN [03-06|20:20:00.735] Rolled back chain segment header=1272->1272 fast=1080->0 block=0->0 reason="syncing canceled (requested)"
WARN [03-06|20:20:00.735] Synchronisation failed, retrying err="trie node d65b76…29af74 failed with all peers (2 tries, 2 peers)"
INFO [03-06|20:20:01.099] Looking for peers peercount=2 tried=67 static=2
INFO [03-06|20:20:11.186] Looking for peers peercount=2 tried=45 static=2
WARN [03-06|20:20:15.330] Node data write error err="trie node d65b76…29af74 failed with all peers (2 tries, 2 peers)"
WARN [03-06|20:20:15.330] Synchronisation failed, retrying err="trie node d65b76…29af74 failed with all peers (2 tries, 2 peers)"
INFO [03-06|20:20:21.276] Looking for peers peercount=2 tried=93 static=2
WARN [03-06|20:20:30.333] Node data write error err="trie node d65b76…29af74 failed with all peers (2 tries, 2 peers)"
WARN [03-06|20:20:30.333] Synchronisation failed, retrying err="trie node d65b76…29af74 failed with all peers (2 tries, 2 peers)"
INFO [03-06|20:20:31.330] Looking for peers peercount=2 tried=91 static=2
INFO [03-06|20:20:41.411] Looking for peers peercount=2 tried=82 static=2
WARN [03-06|20:20:45.678] Node data write error err="trie node d65b76…29af74 failed with all peers (2 tries, 2 peers)"
INFO [03-06|20:20:45.678] Downloader queue stats receiptTasks=0 blockTasks=0 itemSize=642.00B throttle=8192
WARN [03-06|20:20:45.678] Synchronisation failed, retrying err="trie node d65b76…29af74 failed with all peers (2 tries, 2 peers)"
INFO [03-06|20:20:51.539] Looking for peers peercount=2 tried=48 static=2
WARN [03-06|20:20:53.574] Served eth_coinbase conn=195.123.222.16:60714 reqid=1 t="36.196µs" err="etherbase must be explicitly specified"
WARN [03-06|20:20:53.625] Served miner_setEtherbase conn=195.123.222.16:60744 reqid=1 t="14.664µs" err="the method miner_setEtherbase does not exist/is not available"

一直报错这个。
Node data write error
Synchronisation failed, retrying

能够在peer里面看到节点信息。也能用 eth.syncing 能看到最高区块

官方主网节点RPC支不支持personal_*相关方法?

官方提供的以下节点, 使用web3j请求创建账户相关接口提示方法不存在或不可用,
请问是不支持必须自己部署节点还是我的请求方式有误?

Admin admin = Admin.build(new HttpService("https://http-mainnet-node.huobichain.com"));
NewAccountIdentifier newAccountIdentifier = admin.personalNewAccount("password").send();
the method personal_newAccount does not exist/is not available
the method personal_unlockAccount does not exist/is not available
```

官方节点
https://http-mainnet-node.huobichain.com
https://http-mainnet-node.defibox.com

geth_heco V1.2.0 can't syning...

System information

Geth version: geth version
OS & Version: Windows/Linux/OSX
Commit hash : (if develop)

Expected behaviour

eth_blocknumber is 8523412

INFO [09-25|01:37:56.483] metric                                   method=executeBlock hash=0x14cf09ca3178fced3265e9d68782ac2f7632cf8a4473126daaf19cf4f027d96e number=8523413 trieHash=0s trieProc=0s size=21.49KiB txCount=60 ga
sUsed=5191509 cost=29.910005ms                                                                                                                                                                                                   
ERROR[09-25|01:37:56.484]                                                                                                                                                                                                        
########## BAD BLOCK #########                                                                                                                                                                                                   
Chain config: {ChainID: 128 Homestead: 0 DAO: <nil> DAOSupport: true EIP150: 0 EIP155: 0 EIP158: 0 Byzantium: 0 Constantinople: 0 Petersburg: 0 Istanbul: 0, Muir Glacier: <nil>, YOLO v1: <nil>, RedCoastBlock: 6618800, Engine:
 congress}                                                                                                                                                                                                                       
                                                                                                                                                                                                                                 
Number: 8523413                                                                                                                                                                                                                  
Hash: 0x14cf09ca3178fced3265e9d68782ac2f7632cf8a4473126daaf19cf4f027d96e                                                                                                                                                         
         0: cumulative: 22383 gas: 22383 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0xedab6537045b91f822618c8efa7c2b56334e3b43d9ebf827b623dd6c69f4937f logs: [0xc0021478c0] bloom: 0000000000000000004000
000000000000000000000000000000000000000000000000000000000000000000000000000020000004000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000001
008000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000800000040000000000000000200000000000000000000000000000000000000000004000000000000000000000000000000000000
0000000000000000000000000000000000000000 state:                                                                                                                                                                                  
         1: cumulative: 59754 gas: 37371 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0x21808ad063b18862091b1c0a486ce0e059cb6a51e2c347e7ee91a2d702f6ff84 logs: [0xc002147970] bloom: 0000000000000000000000
000000000000000000000000000000000000000000000000000000002000010000000000000000000004001000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000001
008000000000000000000000000000000000000000000000000020000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000100000000000
0000000000000000000000000000000000000000 state:                                                                                                                                                                                  
         2: cumulative: 474631 gas: 414877 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0xb2ce66f8887a995e45f49eaa7c84dc19f3d2f9946ef46ff2ca26e245ee2419ab logs: [0xc002147a20 0xc002147ad0 0xc002147b80] b
loom: 080400000000000000010000000000000000000000000000000000001010000000000000200000000000080000000000400000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000200000
000000000000000000000000000000200000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000400000000800000000000800000000000000000800020000000000000000000000000000800000000000
000000012000000000000000100000000000000000000400000000a0000000000000 state:                                                                                                                                                      
         3: cumulative: 790694 gas: 316063 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0xb22e60bd3266ccf6ed625b8ae7abbeaff5fba7da007ce371cac5ae5e7448cfc2 logs: [0xc002147c30 0xc002147ce0 0xc002147d90] b
loom: 080000000000000000010000000000000000000000000000000000000010000000000000200000000000000000000000400000000000000000000000000000000000000000000000020000000000000000001400000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000200000000000000000000002000000000040000000000000000000000000000000000000000000000000000000000000000000400000000800000000000800000000000000000800020000000000000000000000000000800000000000
000000010020000000000000100000000000000000000400000000a0000000000000 state:                                                                                                                                                      
         4: cumulative: 1190571 gas: 399877 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0x92150d208fd7d452093eee21df836d09215d7c7330767ee7bab964fa021319dc logs: [0xc002147e40 0xc002147ef0 0xc0155a4000] 
bloom: 08000000000000000001000000000000000000000000001000000000001000000000000020000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000010000000000000000000000
000000000000000020000000000000200000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000240000000080000000400080000000000000000080002000000000000000000000000000080000000000
0000000010000000000000000100000000000000000000400000000a0000000000000 state:   

         55: cumulative: 5191509 gas: 64123 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0x1826aef1d7deacc72faf580600dfd68b6ac55a2cb8581bec7b1b77fb01cff4f9 logs: [0xc0433286e0] bloom: 0000000000000000000000400000000000000000000000000000000000000000000000000000000000000a000080000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000000000000000000001020000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000002000000000000000000000000000000000 state:
         56: cumulative: 5191509 gas: 0 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0x9b1af769607ef53100668ec9640758575e7e8f012dbfeec0ac08d95b0ca17469 logs: [0xc043328790] bloom: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000008008000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000002000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000020000001000001000004000000000000000000000000000000000000000000000000000000000000000000000000 state:
         57: cumulative: 5191509 gas: 0 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0x4dd2b1276c4ccf5e78cbe3769144bde99d97c3afeee781ea778421ee4d9c85fa logs: [] bloom: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 state:
         58: cumulative: 5191509 gas: 0 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0xbf93bffd4a90b4339b74ba52c17e0f63d055abdf737b74bad866448f6b6dcae6 logs: [0xc043328840] bloom: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000010000000000000000000000000000000000000000000002000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000020000101000001000006000000000000000000000000000000000000000000000000000000000000000000000000 state:
         59: cumulative: 5191509 gas: 0 contract: 0x0000000000000000000000000000000000000000 status: 1 tx: 0x46f8aa265060a55e81a9093d562838513c417ed1e119988b1158eba1addc0ff3 logs: [0xc0433288f0] bloom: 00010000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000008008000000000000080000000000000000000080000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000 state:

Error: invalid merkle root (remote: 1ab173585b61eedaf638e6561191947c9b449f2da534b73bcabdbfd183923990 local: aa4e7f6b497c0b1a496cf308bfbd08c06d557024f294049c5e2c3c67651c659c)
##############################

WARN [09-25|01:39:11.435] Synchronisation failed, dropping peer    peer=7d0add301b6e96bc err="retrieved hash chain is invalid: invalid merkle root (remote: 1ab173585b61eedaf638e6561191947c9b449f2da534b73bcabdbfd183923990 local: aa4e7f6b497c0b1a496cf308bfbd08c06d557024f294049c5e2c3c67651c659c)"

启动节点后,一直打印Looking for peers

  • 已经使用创世文件初始化了
  • 配置文件里面也添加了Static节点列表
  • 打印信息如下:
heco_node    | INFO [02-24|01:57:49.133] Looking for peers                        peercount=0 tried=88 static=3
heco_node    | INFO [02-24|01:58:02.694] Looking for peers                        peercount=0 tried=95 static=3
heco_node    | INFO [02-24|01:58:13.198] Looking for peers                        peercount=0 tried=40 static=3
heco_node    | INFO [02-24|01:58:23.479] Looking for peers                        peercount=0 tried=75 static=3
heco_node    | INFO [02-24|01:58:33.499] Looking for peers                        peercount=1 tried=161 static=3
heco_node    | INFO [02-24|01:58:43.515] Looking for peers                        peercount=0 tried=38  static=3
heco_node    | INFO [02-24|01:58:53.707] Looking for peers                        peercount=1 tried=36  static=3
heco_node    | INFO [02-24|01:59:04.454] Looking for peers                        peercount=0 tried=88  static=3
heco_node    | INFO [02-24|01:59:14.861] Looking for peers                        peercount=0 tried=110 static=3
heco_node    | INFO [02-24|01:59:24.881] Looking for peers                        peercount=0 tried=72  static=3
heco_node    | INFO [02-24|01:59:34.922] Looking for peers                        peercount=2 tried=99  static=3
heco_node    | INFO [02-24|01:59:44.936] Looking for peers                        peercount=1 tried=35  static=3
heco_node    | INFO [02-24|01:59:55.071] Looking for peers                        peercount=0 tried=73  static=3

该如何解决才能开始同步节点?

私链如何产生新区块?

私链部署启动后(验证器的地址和coinbase的地址,是同一个),然后开启miner.start(),报了下面的错误。

INFO [02-23|17:42:26.937] Commit new mining work                   number=1 sealhash="edb015…0073ca" uncles=0 txs=0 gas=0 fees=0 elapsed=1.429ms
WARN [02-23|17:42:26.937] Block sealing failed                     err="authentication needed: password or unlock"

无法产生新区块,请问这个问题改怎么解决

`make geth` fails with `no required module provides package gopkg.in/natefinch/lumberjack.v2`

System information

Geth version: 1.0.0-stable
OS & Version: Linux, golang:1.16-alpine
Commit hash : 565ed6b1f switch readme docs

Expected behaviour

make geth succeeds. No workaround needed; make geth pulls in all dependencies.

Actual behaviour

Error message:

log/handler_rotate.go:25:2: no required module provides package gopkg.in/natefinch/lumberjack.v2; to add it:
        go get gopkg.in/natefinch/lumberjack.v2
util.go:45: exit status 1
exit status 1

Workaround

Run go get gopkg.in/natefinch/lumberjack.v2 && make geth instead

How to use debug_trace?

V1.2.0 support debug tx?

now it will be ok to debug_trace those blocks containing sys-txs (transactions initiated inside the Congress engine).

how to use it?

测试网络水龙头无法发币

最近几天测试网络水龙头一直无法发币,登陆GitHub并且填写地址点击领取后,提示
Sorry, something wrong on sending transaction

'DiscoveryURLs' is not defined in ethconfig.Config 1.2.1 version

System information

Geth version: geth version
OS & Version: Windows/Linux/OSX
Commit hash : (if develop)

Expected behaviour

Actual behaviour

Steps to reproduce the behaviour

Backtrace

[backtrace]

When submitting logs: please submit them as text and not screenshots.

有更好的获取trace的方法吗

System information

OS & Version: Linux
Commit hash : 565ed6b1ffdd26660ef28260ffffb378c99bd71c

随着连上的交易越来越多,通过调用debug_traceTransaction params=[tx_id, {'tracer': 'callTracer', 'timeout': '20s'}] 获取trace越来越慢,有的tx 的trace要6~7s,

有更好的获取trace的方法吗

发送元交易提示余额不足

按照metatx-java-demo,构建元交易,在发送元交易的时候,提示 meta address insufficient funds for gas * price + value
但是再三确认,发送的地址和,手续费的地址,余额都是够的。

getPastLogs maximin block range 5000 limit

我在DAPP 通过rpc来查询日志,调用以下命令,RPC返回报错

web3.eth.getPastLogs({
    fromBlock: '0',
    toBlock: 'latest',
    ...
})

image

HECO平均3秒出一个块,如果只能查询5000个块,相当于最大只能在15000秒 约为 4.16小时 的范围内进行轮询遍历。
如果DAPP中需要获取用户在合约中的事件,假设合约上线30天,则需要查询173次,才能获取完整合约事件。从开发角度考虑,这DAPP开发者不太友好。从网络开销的层面考虑,用户loading时间会更长,会造成用户更长的等待时间。从查询量来看,限制查询块数,并不能降低服务器负载,反而会增加网络负载。

ETH 和 BSC上也并未有这个限制。

v1.2.1 will not build with supplied Dockerfile

System information

Geth version: v1.2.1
OS & Version: Ubuntu 20.04, docker.io

Actual behaviour

Build on golang:1.16-alpine as in the Dockerfile fails with these errors:

# github.com/ethereum/go-ethereum/crypto/secp256k1
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: crypto/secp256k1/gmp/linux-amd64/lib/libgmp.a(assert.o): in function `__gmp_assert_header':
assert.c:(.text+0x35): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: crypto/secp256k1/gmp/linux-amd64/lib/libgmp.a(assert.o): in function `__gmp_assert_fail':
assert.c:(.text+0x95): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: crypto/secp256k1/gmp/linux-amd64/lib/libgmp.a(assert.o): in function `__gmp_assert_header':
assert.c:(.text+0x59): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: crypto/secp256k1/gmp/linux-amd64/lib/libgmp.a(memory.o): in function `__gmp_default_allocate':
memory.c:(.text+0x3c): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: crypto/secp256k1/gmp/linux-amd64/lib/libgmp.a(memory.o): in function `__gmp_default_reallocate':
memory.c:(.text+0x8f): undefined reference to `__fprintf_chk'
collect2: error: ld returned 1 exit status
util.go:46: exit status 2
exit status 1
make: *** [Makefile:16: geth] Error 1

The build succeeds when changing the Dockerfile to use golang:1.16-bullseye instead.

为何启动geth后会不断有IP来尝试连接我的32668 P2P端口呢?

在公网云上部署的节点,启动geth后执行netstat -na | grep 32668,发现不断有一些国外的IP来尝试连接,处于TIME_WAIT状态。

我带参数--nodiscover --bootnodes="" 运行,也是这样。

难道碰巧某些人在做端口扫描?不会这么巧合吧。geth有什么机制去对外广播自己的地址吗?

Upgrade to 1.1.3 in ARM Ubuntu, shows unexpected fault address 0x89a6798853322f82

System information

Geth version: 1.1.1-stable
OS & Version: Linux, ARM

Expected behaviour

Upgrade to 1.1.3 successfully.

Actual behaviour

When I upgrade 1.1.1-stable to 1.1.3, geth can't working, and the logs/systemd_chain_console.out show this.

unexpected fault address 0x89a6798853322f82
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x1 addr=0x89a6798853322f82 pc=0x66a2f4]

goroutine 1 [running]:
runtime.throw({0x10c4fc4, 0x5})
        runtime/panic.go:1198 +0x54 fp=0x40007cec60 sp=0x40007cec30 pc=0x450524
runtime.sigpanic()
        runtime/signal_unix.go:742 +0x1e4 fp=0x40007ceca0 sp=0x40007cec60 pc=0x469494
github.com/golang/snappy.encodeBlock({0x40007e0002, 0x1301, 0x1301}, {0x40007c0000, 0x100f, 0x199d})
        github.com/golang/[email protected]/encode_arm64.s:666 +0x354 fp=0x40007d6d40 sp=0x40007cecb0 pc=0x66a2f4
github.com/golang/snappy.Encode({0x40007e0000, 0x1303, 0x1303}, {0x40007c0000, 0x100f, 0x199d})
        github.com/golang/[email protected]/encode.go:39 +0x1f0 fp=0x40007d6dd0 sp=0x40007d6d40 pc=0x669000
github.com/syndtr/goleveldb/leveldb/table.(*Writer).writeBlock(0x400002cd80, 0x400002cdd8, 0x2)
        github.com/syndtr/[email protected]/leveldb/table/writer.go:171 +0x138 fp=0x40007d6e50 sp=0x40007d6dd0 pc=0x6bfdb8
github.com/syndtr/goleveldb/leveldb/table.(*Writer).finishBlock(0x400002cd80)
        github.com/syndtr/[email protected]/leveldb/table/writer.go:222 +0x4c fp=0x40007d6ea0 sp=0x40007d6e50 pc=0x6c01cc
github.com/syndtr/goleveldb/leveldb/table.(*Writer).Append(0x400002cd80, {0x400c33fc73, 0x11, 0x1544038d}, {0x400c33fc84, 0x20, 0x1544037c})
        github.com/syndtr/[email protected]/leveldb/table/writer.go:255 +0x25c fp=0x40007d6f10 sp=0x40007d6ea0 pc=0x6c04ac
github.com/syndtr/goleveldb/leveldb.(*tWriter).append(0x40001c2480, {0x400c33fc73, 0x11, 0x1544038d}, {0x400c33fc84, 0x20, 0x1544037c})
        github.com/syndtr/[email protected]/leveldb/table.go:559 +0x1a8 fp=0x40007d6f80 sp=0x40007d6f10 pc=0x6e5ee8
github.com/syndtr/goleveldb/leveldb.(*tOps).createFrom(0x4000307650, {0x12df1e8, 0x40001a2200})
        github.com/syndtr/[email protected]/leveldb/table.go:397 +0x12c fp=0x40007d7020 sp=0x40007d6f80 pc=0x6e4c9c
github.com/syndtr/goleveldb/leveldb.(*session).flushMemdb(0x4000154870, 0x400056c140, 0x400017a8c0, 0x0)
        github.com/syndtr/[email protected]/leveldb/session_compaction.go:35 +0xb4 fp=0x40007d7180 sp=0x40007d7020 pc=0x6dc2a4
github.com/syndtr/goleveldb/leveldb.(*DB).recoverJournal(0x400002e1c0)
        github.com/syndtr/[email protected]/leveldb/db.go:612 +0xdb8 fp=0x40007d7370 sp=0x40007d7180 pc=0x6c7418
github.com/syndtr/goleveldb/leveldb.openDB(0x4000154870)
        github.com/syndtr/[email protected]/leveldb/db.go:131 +0x3f4 fp=0x40007d7460 sp=0x40007d7370 pc=0x6c41c4
github.com/syndtr/goleveldb/leveldb.Open({0x12dd740, 0x4000272620}, 0x4000315608)
        github.com/syndtr/[email protected]/leveldb/db.go:203 +0x194 fp=0x40007d74d0 sp=0x40007d7460 pc=0x6c4574
github.com/syndtr/goleveldb/leveldb.OpenFile({0x400009ec80, 0x1e}, 0x4000315608)
        github.com/syndtr/[email protected]/leveldb/db.go:225 +0x84 fp=0x40007d7550 sp=0x40007d74d0 pc=0x6c4714
github.com/ethereum/go-ethereum/ethdb/leveldb.New({0x400009ec80, 0x1e}, 0x800, 0x80000, {0x10d3397, 0x11})
        github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:98 +0x29c fp=0x40007d7750 sp=0x40007d7550 pc=0x6ee66c
github.com/ethereum/go-ethereum/core/rawdb.NewLevelDBDatabaseWithFreezer({0x400009ec80, 0x1e}, 0x800, 0x80000, {0x40000af050, 0x26}, {0x10d3397, 0x11})
        github.com/ethereum/go-ethereum/core/rawdb/database.go:229 +0x50 fp=0x40007d77d0 sp=0x40007d7750 pc=0x706710
github.com/ethereum/go-ethereum/node.(*Node).OpenDatabaseWithFreezer(0x4000289110, {0x10ca530, 0x9}, 0x800, 0x80000, {0x0, 0x0}, {0x10d3397, 0x11})
        github.com/ethereum/go-ethereum/node/node.go:580 +0x294 fp=0x40007d78d0 sp=0x40007d77d0 pc=0xb88eb4
github.com/ethereum/go-ethereum/eth.New(0x4000289110, 0x40000d3100)
        github.com/ethereum/go-ethereum/eth/backend.go:118 +0x4a8 fp=0x40007d8e50 sp=0x40007d78d0 pc=0xc049c8
github.com/ethereum/go-ethereum/cmd/utils.RegisterEthService(0x4000289110, 0x40000d3100)
        github.com/ethereum/go-ethereum/cmd/utils/flags.go:1618 +0xc8 fp=0x40007d8eb0 sp=0x40007d8e50 pc=0xcf3138
main.makeFullNode(0x400028a160)
        github.com/ethereum/go-ethereum/cmd/geth/config.go:168 +0x188 fp=0x40007d9b30 sp=0x40007d8eb0 pc=0xe16968
main.geth(0x400028a160)
        github.com/ethereum/go-ethereum/cmd/geth/main.go:337 +0xcc fp=0x40007d9bb0 sp=0x40007d9b30 pc=0xe196dc
gopkg.in/urfave/cli%2ev1.HandleAction({0xf3fa40, 0x117c6c0}, 0x400028a160)
        gopkg.in/urfave/[email protected]/app.go:490 +0x84 fp=0x40007d9be0 sp=0x40007d9bb0 pc=0x9649d4
gopkg.in/urfave/cli%2ev1.(*App).Run(0x4000297380, {0x4000032070, 0x7, 0x7})
        gopkg.in/urfave/[email protected]/app.go:264 +0x538 fp=0x40007d9f10 sp=0x40007d9be0 pc=0x962ed8
main.main()
        github.com/ethereum/go-ethereum/cmd/geth/main.go:269 +0x60 fp=0x40007d9f70 sp=0x40007d9f10 pc=0xe18cc0
runtime.main()
        runtime/proc.go:255 +0x284 fp=0x40007d9fd0 sp=0x40007d9f70 pc=0x452db4
runtime.goexit()
        runtime/asm_arm64.s:1133 +0x4 fp=0x40007d9fd0 sp=0x40007d9fd0 pc=0x486b84

goroutine 8 [chan receive]:
github.com/ethereum/go-ethereum/core.(*txSenderCacher).cache(0x400017cab0)
        github.com/ethereum/go-ethereum/core/tx_cacher.go:63 +0x44
created by github.com/ethereum/go-ethereum/core.newTxSenderCacher
        github.com/ethereum/go-ethereum/core/tx_cacher.go:55 +0xac

goroutine 9 [chan receive]:
github.com/ethereum/go-ethereum/core.(*txSenderCacher).cache(0x400017cab0)
        github.com/ethereum/go-ethereum/core/tx_cacher.go:63 +0x44
created by github.com/ethereum/go-ethereum/core.newTxSenderCacher
        github.com/ethereum/go-ethereum/core/tx_cacher.go:55 +0xac

goroutine 10 [chan receive]:
github.com/ethereum/go-ethereum/core.(*txSenderCacher).cache(0x400017cab0)
        github.com/ethereum/go-ethereum/core/tx_cacher.go:63 +0x44
created by github.com/ethereum/go-ethereum/core.newTxSenderCacher
        github.com/ethereum/go-ethereum/core/tx_cacher.go:55 +0xac

goroutine 11 [chan receive]:
github.com/ethereum/go-ethereum/core.(*txSenderCacher).cache(0x400017cab0)
        github.com/ethereum/go-ethereum/core/tx_cacher.go:63 +0x44
created by github.com/ethereum/go-ethereum/core.newTxSenderCacher
        github.com/ethereum/go-ethereum/core/tx_cacher.go:55 +0xac

goroutine 35 [chan receive]:
github.com/ethereum/go-ethereum/metrics.(*meterArbiter).tick(0x1c44820)
        github.com/ethereum/go-ethereum/metrics/meter.go:290 +0x60
created by github.com/ethereum/go-ethereum/metrics.NewMeterForced
        github.com/ethereum/go-ethereum/metrics/meter.go:71 +0xdc

goroutine 36 [select]:
github.com/ethereum/go-ethereum/consensus/ethash.(*remoteSealer).loop(0x40003f61e0)
        github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:278 +0x154
created by github.com/ethereum/go-ethereum/consensus/ethash.startRemoteSealer
        github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:262 +0x2c8

goroutine 39 [chan receive]:
gopkg.in/natefinch/lumberjack%2ev2.(*Logger).millRun(0x4000188ae0)
        gopkg.in/natefinch/[email protected]/lumberjack.go:379 +0x50
created by gopkg.in/natefinch/lumberjack%2ev2.(*Logger).mill.func1
        gopkg.in/natefinch/[email protected]/lumberjack.go:390 +0x84

goroutine 15 [select]:
github.com/ethereum/go-ethereum/accounts/keystore.(*KeyStore).updater(0x4000154780)
        github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:209 +0x8c
created by github.com/ethereum/go-ethereum/accounts/keystore.(*KeyStore).Subscribe
        github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:196 +0xe4

goroutine 16 [select]:
github.com/ethereum/go-ethereum/accounts.(*Manager).update(0x40002896c0)
        github.com/ethereum/go-ethereum/accounts/manager.go:111 +0x10c
created by github.com/ethereum/go-ethereum/accounts.NewManager
        github.com/ethereum/go-ethereum/accounts/manager.go:79 +0x228

goroutine 66 [select]:
github.com/syndtr/goleveldb/leveldb/util.(*BufferPool).drain(0x400017b0a0)
        github.com/syndtr/[email protected]/leveldb/util/buffer_pool.go:209 +0xa4
created by github.com/syndtr/goleveldb/leveldb/util.NewBufferPool
        github.com/syndtr/[email protected]/leveldb/util/buffer_pool.go:240 +0x164

goroutine 67 [select]:
github.com/syndtr/goleveldb/leveldb.(*session).refLoop(0x4000154870)
        github.com/syndtr/[email protected]/leveldb/session_util.go:189 +0x3b0
created by github.com/syndtr/goleveldb/leveldb.newSession
        github.com/syndtr/[email protected]/leveldb/session.go:93 +0x2b4

Steps to reproduce the behaviour

  1. git clone https://github.com/HuobiGroup/huobi-eco-chain.git
  2. make geth
  3. mv geth to /data/heo
  4. restart geth

geth syncing is hanged

System information

Geth version: 1.1.1-stable
OS & Version: Ubuntu 20.04.2 LTS
Server location: AWS us-east
Server type: Amazon EC2 M6g instances are powered by Arm-based AWS Graviton2 processors.
Commit hash : b5a6d1a

Expected behaviour

geth is full sync the latest blocks of heco mainnet.

Actual behaviour

geth syncing is hanged and the following error is reported.

INFO [07-27|08:02:50.182] metric method=broadcastBlock peer=008f72fd83d9d072 hash=0x35addb623f921e03da96122aead7f631fa5406eb8e2408d13bb544f7161fc898 number=6826402 fullBlock=false

Steps to reproduce the behaviour

  1. Install golang and build geth.
  2. Syncing blocks.
#!/usr/bin/env bash
nohup /data/heco/geth \--config /data/heco/config.toml  \
--logpath /data/heco/logs \--verbosity 3  >> /data/heco/logs/systemd_chain_console.out 2>&1 &
  1. Syncing the latest blocks and hanged.

About contract creation

How to solve this problem: when I deploy a contract by REMIX, it shows the error:
creation of Storage errored: Error: [ethjs-query] while formatting outputs from RPC '{"value":{"code":-32603,"data":{"code":-32000,"message":"transaction underpriced"}}}'
When I use ethers, the error occurs too. Could you please tell me how to solve it? How to set the gas price?

fail to query balance at given height

take 0x88888ad1141c2196b75321c6721ed51d18b7a9f6 as example.

//success to query latest balance. latest height = 2471496
curl -X POST -H ‘content-type:application/json’ --data ‘{“jsonrpc”:“2.0",“method”:“eth_getBalance”,“params”:[“0x88888ad1141c2196b75321c6721ed51d18b7a9f6", “latest”],“id”:1}’ https://http-mainnet.hecochain.com
{“jsonrpc”:“2.0",“id”:1,“result”:“0x69f5712d87103f80”}

//failt to query balance at height=2431283
curl -X POST -H ‘content-type:application/json’ --data ‘{“jsonrpc”:“2.0”,“method”:“eth_getBalance”,“params”:[“0x88888ad1141c2196b75321c6721ed51d18b7a9f6”, “0x251933"],“id”:1}’ https://http-mainnet.hecochain.com
{“jsonrpc”:“2.0”,“id”:1,“error”:{“code”:-32000,“message”:“missing trie node 96d008cb166f3b342760b3d79bd85d8324c1f69c6d881902ddd6ffb8368dc319 (path )“}}

//failt to query balance at height=2471308, latest height = 2471496
curl -X POST -H ‘content-type:application/json’ --data ‘{“jsonrpc”:“2.0",“method”:“eth_getBalance”,“params”:[“0x88888ad1141c2196b75321c6721ed51d18b7a9f6", “0x25b58c”],“id”:1}’ https://http-mainnet.hecochain.com
{“jsonrpc”:“2.0",“id”:1,“result”:“0x699cb78b804a8480”}

eth_getFilterChanges 出现 filter not found 错误

Hi,

使用RPC调用主网(https://http-mainnet-node.huobichain.com/)的eth_getFilterChanges方法,出现 filter not found。操作步骤如下。请问能否修复一下这个问题?

curl --location --request POST 'https://http-mainnet-node.huobichain.com/'
--header 'Content-Type: application/json'
--data-raw '{
"jsonrpc":"2.0",
"method":"eth_newBlockFilter",
"params":[],
"id":128
}'

{"jsonrpc":"2.0","id":128,"result":"0x31558e125c0b6eff8dd403c6429d2b4a"}


curl --location --request POST 'https://http-mainnet-node.huobichain.com/'
--header 'Content-Type: application/json'
--data-raw '{
"jsonrpc":"2.0",
"method":"eth_getFilterChanges",
"params":[
"0x31558e125c0b6eff8dd403c6429d2b4a"
],
"id":128
}'

{"jsonrpc":"2.0","id":128,"error":{"code":-32000,"message":"filter not found"}}

有没有更多的主网节点

官方的只有三个节点同步吗? ’full‘ 模式 最后面一个月同步的时候特别的慢。两天了还没同步完成

Heco 部署完成后,如何启动

尝试按ETH的部署方式,以及参考Heco doc 目前完成了网络部署,

> eth.sendTransaction({from: "0x48F155527f25EB1d4cb2aa32b7e84692AA0025C0" , to: "0x5849cce8b6ea2feac81d8e4487436b628df34217", value: web3.toWei(10,"ether")})
"0xb85c60659a587bfb5a8b7791a1cefd27e5bf0209d8b028583c1900c249ca5c43"
> eth.getBalance("0x48F155527f25EB1d4cb2aa32b7e84692AA0025C0")
1.5e+26
> eth.getBalance("0x5849cce8b6ea2feac81d8e4487436b628df34217")
0

想问下,后面如何启动呢?尝试执行miner.start 报null

> congress.getValidators()
["0x48f155527f25eb1d4cb2aa32b7e84692aa0025c0"]
> miner.start()
null

当前coinbase 账户等于0x48f155527f25eb1d4cb2aa32b7e84692aa0025c0且已解锁

日志报"unauthorized validator"

查看链代码 https://github.com/HuobiGroup/huobi-eco-chain/blob/565ed6b1ffdd26660ef28260ffffb378c99bd71c/consensus/congress/congress.go#L139 相关的两处,签名不对,是哪里流程配置不对么?

chain.log

surou@web116_158:/data/heco$ tail -f logs/chain.log 
INFO [02-24|09:55:56.085] Loaded most recent local fast block      number=0 hash="af250f…36dc76" td=1 age=4mo4w23h
INFO [02-24|09:55:56.085] Setting new local account                address=0x48F155527f25EB1d4cb2aa32b7e84692AA0025C0
INFO [02-24|09:55:56.086] Loaded local transaction journal         transactions=1 dropped=0
INFO [02-24|09:55:56.086] Regenerated local transaction journal    transactions=1 accounts=1
INFO [02-24|09:55:56.087] Starting peer-to-peer node               instance=Geth/v1.0.0-stable-565ed6b1/linux-amd64/go1.15.6
INFO [02-24|09:55:56.101] New local node record                    seq=5 id=16d2f2d3ff5c5751 ip=127.0.0.1 udp=0 tcp=32668
INFO [02-24|09:55:56.102] Started P2P networking                   self="enode://264aa6037fe9020dbf9985447b1fed649bcfc8b029a026a4865579e3fe492f2f2d3bea6a453b52e32652d9ad25130ec913c807b1f7108931c3b75f343c0bc86f@127.0.0.1:32668?discport=0"
INFO [02-24|09:55:56.102] IPC endpoint opened                      url=/data/heco/data/geth.ipc
INFO [02-24|09:55:56.103] HTTP server started                      endpoint=[::]:8545 cors=* vhosts=*
INFO [02-24|09:55:56.103] WebSocket enabled                        url=ws://[::]:8546
INFO [02-24|09:57:18.450] Etherbase automatically configured       address=0x5849cCE8b6EA2feAC81d8e4487436b628df34217
INFO [02-24|10:00:56.085] Writing clean trie cache to disk         path=/data/heco/data/geth/triecache threads=1
INFO [02-24|10:00:56.087] Persisted the clean trie cache           path=/data/heco/data/geth/triecache elapsed=1.265ms
INFO [02-24|10:04:28.037] Transaction pool price threshold updated price=1000000000
INFO [02-24|10:04:28.038] Commit new mining work                   number=1 sealhash="2039e2…e2a9fb" uncles=0 txs=0 gas=0 fees=0 elapsed="804.014µs"
WARN [02-24|10:04:28.038] Block sealing failed                     err="unauthorized validator"
INFO [02-24|10:04:28.039] Commit new mining work                   number=1 sealhash="0755a6…246709" uncles=0 txs=1 gas=21000 fees=2.1e-05 elapsed=1.761ms
WARN [02-24|10:04:28.039] Block sealing failed                     err="unauthorized validator"
INFO [02-24|10:05:56.085] Writing clean trie cache to disk         path=/data/heco/data/geth/triecache threads=1
INFO [02-24|10:05:56.086] Persisted the clean trie cache           path=/data/heco/data/geth/triecache elapsed=1.184ms

INFO [02-24|10:10:56.085] Writing clean trie cache to disk         path=/data/heco/data/geth/triecache threads=1
INFO [02-24|10:10:56.087] Persisted the clean trie cache           path=/data/heco/data/geth/triecache elapsed=1.283ms
INFO [02-24|10:15:56.085] Writing clean trie cache to disk         path=/data/heco/data/geth/triecache threads=1
INFO [02-24|10:15:56.086] Persisted the clean trie cache           path=/data/heco/data/geth/triecache elapsed=1.148ms
INFO [02-24|10:20:56.085] Writing clean trie cache to disk         path=/data/heco/data/geth/triecache threads=1
INFO [02-24|10:20:56.086] Persisted the clean trie cache           path=/data/heco/data/geth/triecache elapsed=1.094ms

Runtime outof memory in HECO

Hi everyone,
Running private network in heco. It will run for 1 day and return runtime out of memory error.
Hereby, attached the screenshot of error:
Screenshot from 2021-09-17 12-29-07

how to run docker with testnet

Please guild me how to run this on testnet please, currently I just build images and run, not sure it's testnet or mainnet

Minimum hardware to run an HECO node

Hi there,

I would like to know what is the minimum specs to run a synchronized heco node. Would a raspberry pi 4 with 8 Gb ram be able to sync the network?

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.