Code Example
Data Type
type AuctionDataPkg struct {
TargetHash string `json:"hash"`
ExtraGasFee uint64 `json:"extra_gas_fee"`
Logs []*RPCAuctionLogJson `json:"logs"`
States map[string]map[string]string `json:"states"`
}
type RPCAuctionLogJson struct {
Address string `json:"address"`
Topics []string `json:"topics"`
Data string `json:"data"`
}Subscribe Auctions
method: newPendingAuctions | newPendingAuctionsWithState
func TestSubscribeNewPendingAuctionsWithState(t *testing.T, prv *ecdsa.PrivateKey) {
client, err := rpc.Dial("wss://puissant-builder.48.club/")
if err != nil {
t.Fatal(err)
}
nowTS, signSP, err := signCurrentTimestamp(prv)
if err != nil {
panic(err)
}
ch := make(chan []byte, 10)
sub, err := client.EthSubscribe(context.Background(), ch, method, nowTS, signSP)
if err != nil {
panic(err)
}
for {
select {
case err := <-sub.Err():
log.Fatal(err)
case rawData := <-ch:
auction, err := decompress(rawData)
if err != nil {
panic(err)
}
fmt.Println("tx_hash", auction.TargetHash, "gas_used", auction.GasUsed, "gas_price", auction.GasPrice)
for index, eachLog := range auction.Logs {
fmt.Println(index, eachLog.Address, eachLog.Topics, eachLog.Data)
}
// if method == newPendingAuctionsWithState
count := 0
for addr, storage := range auction.States {
for key, value := range storage {
fmt.Println("storage change", count, addr, key, value)
count++
}
}
fmt.Println()
}
}
}Utils
Last updated
