cloud_functions: use lowercase emitter addresses

This commit is contained in:
Kevin Peters 2022-03-10 22:14:40 +00:00 committed by Justin Schuldt
parent 9c2485b676
commit d96afca105
1 changed files with 23 additions and 4 deletions

View File

@ -7,6 +7,7 @@ import (
"encoding/hex"
"fmt"
"log"
"strings"
"cloud.google.com/go/bigtable"
"cloud.google.com/go/pubsub"
@ -20,7 +21,7 @@ type PubSubMessage struct {
// The keys are emitterAddress hex values, so that we can quickly check a message against the index to see if it
// meets the criteria for saving payload info: if it is a token transfer, or an NFT transfer.
var NFTEmitters = map[string]string{
var nftEmitters = map[string]string{
// mainnet
"0def15a24423e1edd1a5ab16f557b9060303ddbab8c803d2ee48f4b78a1cfd6b": "WnFt12ZrnzZrFZkt2xsNsaNWoQribnuQ5B5FrDbwDhD", // solana
"0000000000000000000000006ffd7ede62328b3af38fcd61461bbfc52f5651fe": "0x6FFd7EdE62328b3Af38FCD61461Bbfc52F5651fE", // ethereum
@ -41,7 +42,11 @@ var NFTEmitters = map[string]string{
"0000000000000000000000002b048Da40f69c8dc386a56705915f8E966fe1eba": "0x2b048Da40f69c8dc386a56705915f8E966fe1eba", // ethereum ropesten
// TODO "": "", // fantom
}
var TokenTransferEmitters = map[string]string{
// NFTEmitters will be populated with lowercase addresses
var NFTEmitters = map[string]string{}
var tokenTransferEmitters = map[string]string{
// mainnet
"ec7372995d5cc8732397fb0ad35c0121e0eaa90d26f828a534cab54391b3a4f5": "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb", // solana
"0000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585": "0x3ee18B2214AFF97000D974cf647E7C347E8fa585", // ethereum
@ -50,7 +55,7 @@ var TokenTransferEmitters = map[string]string{
"0000000000000000000000005a58505a96d1dbf8df91cb21b54419fc36e93fde": "0x5a58505a96d1dbf8df91cb21b54419fc36e93fde", // polygon
"0000000000000000000000000e082f06ff657d94310cb8ce8b0d9a04541d8052": "0x0e082F06FF657D94310cB8cE8B0D9a04541d8052", // avalanche
"0000000000000000000000005848c791e09901b40a9ef749f2a6735b418d7564": "0x5848c791e09901b40a9ef749f2a6735b418d7564", // oasis
"0000000000000000000000007C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2": "0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2", // fantom
"0000000000000000000000007c9fc5741288cdfdd83ceb07f3ea7e22618d79d2": "0x7c9fc5741288cdfdd83ceb07f3ea7e22618d79d2", // fantom
// devnet
"c69a1b1a65dd336bf1df6a77afb501fc25db7fc0938cb08595a9ef473265cb4f": "B6RHG3mfcckmrYN1UhmJzyS1XX3fZKbkeUcpJe9Sy3FE", // solana
@ -64,6 +69,9 @@ var TokenTransferEmitters = map[string]string{
// TODO "": "", // fantom
}
// TokenTransferEmitters will be populated with lowercase addresses
var TokenTransferEmitters = map[string]string{}
// this address is an emitter for BSC and Polygon.
var sharedEmitterAddress = "0000000000000000000000005a58505a96d1dbf8df91cb21b54419fc36e93fde"
@ -250,6 +258,17 @@ func addReceiverAddressToMutation(mut *bigtable.Mutation, ts bigtable.Timestamp,
// ProcessVAA is triggered by a PubSub message, emitted after row is saved to BigTable by guardiand
func ProcessVAA(ctx context.Context, m PubSubMessage) error {
if len(NFTEmitters) == 0 {
for k, v := range nftEmitters {
NFTEmitters[strings.ToLower(k)] = strings.ToLower(v)
}
}
if len(TokenTransferEmitters) == 0 {
for k, v := range tokenTransferEmitters {
TokenTransferEmitters[strings.ToLower(k)] = strings.ToLower(v)
}
}
data := string(m.Data)
if data == "" {
return fmt.Errorf("no data to process in message")
@ -263,7 +282,7 @@ func ProcessVAA(ctx context.Context, m PubSubMessage) error {
// create the bigtable identifier from the VAA data
rowKey := makeRowKey(signedVaa.EmitterChain, signedVaa.EmitterAddress, signedVaa.Sequence)
emitterHex := signedVaa.EmitterAddress.String()
emitterHex := strings.ToLower(signedVaa.EmitterAddress.String())
payloadId := int(signedVaa.Payload[0])
// BSC and Polygon have the same contract address: "0x5a58505a96d1dbf8df91cb21b54419fc36e93fde".