Skip to content

Commit

Permalink
Merge pull request #75 from Pashteto/feat/add_erc1155
Browse files Browse the repository at this point in the history
erc1155 tx struct and ERC1155Transfers method
  • Loading branch information
nanmu42 authored Dec 14, 2022
2 parents 115bac1 + b8dd9f4 commit 74c5135
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 3 deletions.
24 changes: 24 additions & 0 deletions account.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,30 @@ func (c *Client) ERC721Transfers(contractAddress, address *string, startBlock *i
return
}

// ERC1155Transfers get a list of "erc1155 - token transfer events" by
// contract address and/or from/to address.
//
// leave undesired condition to nil.
func (c *Client) ERC1155Transfers(contractAddress, address *string, startBlock *int, endBlock *int, page int, offset int, desc bool) (txs []ERC1155Transfer, err error) {
param := M{
"page": page,
"offset": offset,
}
compose(param, "contractaddress", contractAddress)
compose(param, "address", address)
compose(param, "startblock", startBlock)
compose(param, "endblock", endBlock)

if desc {
param["sort"] = "desc"
} else {
param["sort"] = "asc"
}

err = c.call("account", "token1155tx", param, &txs)
return
}

// BlocksMinedByAddress gets list of blocks mined by address
func (c *Client) BlocksMinedByAddress(address string, page int, offset int) (mined []MinedBlock, err error) {
param := M{
Expand Down
18 changes: 18 additions & 0 deletions account_e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,21 @@ func TestClient_ERC721Transfers(t *testing.T) {
t.Errorf("got txs length %v, want %v", len(txs), wantLen)
}
}

func TestClient_ERC1155Transfers(t *testing.T) {
const (
wantLen = 1
)

var a, b = 128135633, 1802672
var contract, address = "0x3edf71a31b80Ff6a45Fdb0858eC54DE98dF047AA", "0x4b986EF20Bb83532911521FB4F6F5605122a0721"
txs, err := api.ERC1155Transfers(&contract, &address, &b, &a, 0, 0, true)
noError(t, err, "api.ERC721Transfers")

j, _ := json.MarshalIndent(txs, "", " ")
fmt.Printf("%s\n", j)

if len(txs) != wantLen {
t.Errorf("got txs length %v, want %v", len(txs), wantLen)
}
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ module github.com/nanmu42/etherscan-api

go 1.13

require github.com/google/go-cmp v0.5.7 // indirect
require github.com/google/go-cmp v0.5.7
1 change: 1 addition & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
28 changes: 26 additions & 2 deletions response.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,30 @@ type ERC721Transfer struct {
Confirmations int `json:"confirmations,string"`
}

// ERC1155Transfer holds info from ERC1155 token transfer event query
type ERC1155Transfer struct {
BlockNumber int `json:"blockNumber,string"`
TimeStamp Time `json:"timeStamp"`
Hash string `json:"hash"`
Nonce int `json:"nonce,string"`
BlockHash string `json:"blockHash"`
From string `json:"from"`
ContractAddress string `json:"contractAddress"`
To string `json:"to"`
TokenID *BigInt `json:"tokenID"`
TokenName string `json:"tokenName"`
TokenSymbol string `json:"tokenSymbol"`
TokenDecimal uint8 `json:"tokenDecimal,string"`
TokenValue uint8 `json:"tokenValue,string"`
TransactionIndex int `json:"transactionIndex,string"`
Gas int `json:"gas,string"`
GasPrice *BigInt `json:"gasPrice"`
GasUsed int `json:"gasUsed,string"`
CumulativeGasUsed int `json:"cumulativeGasUsed,string"`
Input string `json:"input"`
Confirmations int `json:"confirmations,string"`
}

// MinedBlock holds info from query for mined block by address
type MinedBlock struct {
BlockNumber int `json:"blockNumber,string"`
Expand Down Expand Up @@ -180,8 +204,8 @@ type Log struct {
Removed bool `json:"removed"`
}

//GasPrices holds info for Gas Oracle queries
//Gas Prices are returned in Gwei
// GasPrices holds info for Gas Oracle queries
// Gas Prices are returned in Gwei
type GasPrices struct {
LastBlock int
SafeGasPrice float64
Expand Down

0 comments on commit 74c5135

Please sign in to comment.