Go Ethereum – How to Read ERC1155’s SafeTransferFrom() Transactions in Golang

erc-1155go-ethereumgolangtransactions

Trying to read ERC1155 SafeTransferFrom events, in golang.

Here is what I tried:

var (
    // erc 1155
    logSafeTransferFromSig     = []byte("SafeTransferFrom(address,address,uint256,uint256,bytes)")
    logSafeTransferFromSigHash = crypto.Keccak256Hash(logSafeTransferFromSig)
)

When try to match the event via:

switch vLog.Topics[0].Hex() {
    case logSafeTransferFromSigHash.Hex(): // ERC1155 - safeTransferFrom()

TransferSingle events on this page are not matched.

So how should variable logSafeTransferFromSig be defined?

Best Answer

I've figured it out:

sig hash:

    EventNameTransferSingle  = "TransferSingle"
    logTransferSingleSig     = []byte(EventNameTransferSingle + "(address,address,address,uint256,uint256)")
    logTransferSingleSigHash = crypto.Keccak256Hash(logTransferSingleSig)

event struct:

type Erc1155LogTransferSingle struct {
    Operator common.Address
    From     common.Address
    To       common.Address
    Id       *big.Int
    Value    *big.Int
}

Example query result from my program:

(# 0) transaction log:
    block = 7632194, tx = 0xf597e0f3e6822d1b7accc91b71fff9131eddda8528541aa7c198ace3b12d1709, address = 0x289A1726C00013e1563e6A0442A1d4B34F169072
    log index: 93
    topic 0: 0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62
    Log Name: TransferSingle
    From: 0x0000000000000000000000000000000000000000
    To: 0xe38fE38eB33950E21Fa9419178A27C9Be553330A
    token Id: 0
    Value: 1000000000000000000

(# 1) transaction log:
    block = 7632194, tx = 0xf597e0f3e6822d1b7accc91b71fff9131eddda8528541aa7c198ace3b12d1709, address = 0x289A1726C00013e1563e6A0442A1d4B34F169072
    log index: 94
    topic 0: 0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62
    Log Name: TransferSingle
    From: 0x0000000000000000000000000000000000000000
    To: 0xe38fE38eB33950E21Fa9419178A27C9Be553330A
    token Id: 1
    Value: 1000000000000000000000000000
Related Topic