When I try to use go-ethereum ethclient subscribe against polygon-edge node, I'm getting the following error.
```
json: cannot unmarshal non-string into Go struct field Header.difficulty of type *hexutil.Big
```
Delving into details I found out that polygon-edge block header format differs for eth_subscribe and other eth_* methods
## eth_subscribe
```json
{
"jsonrpc": "2.0",
"method": "eth_subscription",
"params": {
"subscription":"08efc7c7-4123-4d61-9dc6-a2c92b30af1b",
"result": {"ParentHash":"0x6b7408bf8117370562e6be64ed43bf66696df926fe8f5adc1a06e6317ddd665e","Sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","Miner":"0x0000000000000000000000000000000000000000","StateRoot":"0x47e3ef6f51924e2aac36205da88561b7e5e87456cc5eaeae2cceea7956bd8ea3","TxRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","ReceiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","LogsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","Difficulty":602008,"Number":602008,"GasLimit":5242880,"GasUsed":0,"Timestamp":1656657487,"ExtraData":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD49uqU/dkB9Tn+xHhmQrMERkrNsdSLR+6UuwNX+5kHiDgvKg7GhbyS/qrYmmy4QVLd17MUY/giZy1SvOOmdpZcbSkfXlEUINeqVjrp3HHPM+ifkunLlZtal36Np8j2k8lfFgndi4v/ub6Ib4TxhZEB+Ia4QUJT/XBGaZ+pRSUd6R2wJn7entj1mi8PTbtr3z6/PnmNDy3DUmHObcsIrj9SGZn6w5SjqvcLaqV5oVbdJdRW7NYAuEEmxVdaeeRK5R9YUz/hEVpMbL/os4yhAcyc+vxS45yEYmYsYyali/feXyxyo+Hcm8z+BeBMdw4HjAQSdTzGai3jAA==","MixHash":"0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365","Nonce":"0x0000000000000000","Hash":"0x1eef69a11b40b519ba701c82a48a10de66ff293afe9596e7083d1867169308a6"}
}
}
```
Check out:
"Difficulty":602008,
"Number":602008
whilst other methods return
"difficulty":"0x92f98",
"number":"0x92f98"
curl https://polygon.coub.me/polygon/ \
-X POST \
-H "Content-Type: application/json" \
--data '{"method":"eth_getBlockByHash","params":["0x1eef69a11b40b519ba701c82a48a10de66ff293afe9596e7083d1867169308a6",false],"id":1,"jsonrpc":"2.0"}'
```json
{"jsonrpc":"2.0","id":1,"result":{"parentHash":"0x6b7408bf8117370562e6be64ed43bf66696df926fe8f5adc1a06e6317ddd665e","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x47e3ef6f51924e2aac36205da88561b7e5e87456cc5eaeae2cceea7956bd8ea3","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x92f98","totalDifficulty":"0x92f98","size":"0x31c","number":"0x92f98","gasLimit":"0x500000","gasUsed":"0x0","timestamp":"0x62be964f","extraData":"0x0000000000000000000000000000000000000000000000000000000000000000f8f6ea94fdd901f539fec4786642b304464acdb1d48b47ee94bb0357fb990788382f2a0ec685bc92feaad89a6cb84152ddd7b31463f822672d52bce3a676965c6d291f5e511420d7aa563ae9dc71cf33e89f92e9cb959b5a977e8da7c8f693c95f1609dd8b8bffb9be886f84f1859101f886b8414253fd7046699fa945251de91db0267ede9ed8f59a2f0f4dbb6bdf3ebf3e798d0f2dc35261ce6dcb08ae3f521999fac394a3aaf70b6aa579a156dd25d456ecd600b84126c5575a79e44ae51f58533fe1115a4c6cbfe8b38ca101cc9cfafc52e39c8462662c6326a58bf7de5f2c72a3e1dc9bccfe05e04c770e078c0412753cc66a2de300","mixHash":"0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365","nonce":"0x0000000000000000","hash":"0x1eef69a11b40b519ba701c82a48a10de66ff293afe9596e7083d1867169308a6","transactions":[],"uncles":[]}}
```
In go-ethereum Header structure is defined as
```golang
type Header struct {
ParentHash *common.Hash `json:"parentHash" gencodec:"required"`
UncleHash *common.Hash `json:"sha3Uncles" gencodec:"required"`
Coinbase *common.Address `json:"miner"`
Root *common.Hash `json:"stateRoot" gencodec:"required"`
TxHash *common.Hash `json:"transactionsRoot" gencodec:"required"`
ReceiptHash *common.Hash `json:"receiptsRoot" gencodec:"required"`
Bloom *Bloom `json:"logsBloom" gencodec:"required"`
Difficulty *hexutil.Big `json:"difficulty" gencodec:"required"`
Number *hexutil.Big `json:"number" gencodec:"required"`
GasLimit *hexutil.Uint64 `json:"gasLimit" gencodec:"required"`
GasUsed *hexutil.Uint64 `json:"gasUsed" gencodec:"required"`
Time *hexutil.Uint64 `json:"timestamp" gencodec:"required"`
Extra *hexutil.Bytes `json:"extraData" gencodec:"required"`
MixDigest *common.Hash `json:"mixHash"`
Nonce *BlockNonce `json:"nonce"`
BaseFee *hexutil.Big `json:"baseFeePerGas" rlp:"optional"`
}
```
It requres Difficulty field to be hex string.
I notice that polygon-edge is the only ethereum compatible node which has this issue.
## Versions
polygon-edge version v0.4.1
go-ethereum v1.10.20