Skip to content

Commit

Permalink
Handle native value transfers within MultiESDTNFTTransfer.
Browse files Browse the repository at this point in the history
  • Loading branch information
andreibancioiu committed Aug 16, 2024
1 parent 728b59c commit 198ae81
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 16 deletions.
1 change: 1 addition & 0 deletions server/services/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ var (
sendingValueToNonPayableContractDataPrefix = argumentsSeparator + hex.EncodeToString([]byte("sending value to non payable contract"))
emptyHash = strings.Repeat("0", 64)
nodeVersionForOfflineRosetta = "N / A"
nativeAsESDTIdentifier = "EGLD-000000"
)

var (
Expand Down
45 changes: 29 additions & 16 deletions server/services/transactionsTransformer.go
Original file line number Diff line number Diff line change
Expand Up @@ -359,25 +359,38 @@ func (transformer *transactionsTransformer) addOperationsGivenTransactionEvents(
}

for _, event := range eventsESDTTransfer {
if !transformer.provider.HasCustomCurrency(event.identifier) {
if event.identifier == nativeAsESDTIdentifier {
operations := []*types.Operation{
{
Type: opTransfer,
Account: addressToAccountIdentifier(event.senderAddress),
Amount: transformer.extension.valueToNativeAmount("-" + event.value),
},
{
Type: opTransfer,
Account: addressToAccountIdentifier(event.receiverAddress),
Amount: transformer.extension.valueToNativeAmount(event.value),
},
}

rosettaTx.Operations = append(rosettaTx.Operations, operations...)
} else if transformer.provider.HasCustomCurrency(event.identifier) {
// We are only emitting balance-changing operations for supported currencies.
continue
}
operations := []*types.Operation{
{
Type: opCustomTransfer,
Account: addressToAccountIdentifier(event.senderAddress),
Amount: transformer.extension.valueToCustomAmount("-"+event.value, event.getExtendedIdentifier()),
},
{
Type: opCustomTransfer,
Account: addressToAccountIdentifier(event.receiverAddress),
Amount: transformer.extension.valueToCustomAmount(event.value, event.getExtendedIdentifier()),
},
}

operations := []*types.Operation{
{
Type: opCustomTransfer,
Account: addressToAccountIdentifier(event.senderAddress),
Amount: transformer.extension.valueToCustomAmount("-"+event.value, event.getExtendedIdentifier()),
},
{
Type: opCustomTransfer,
Account: addressToAccountIdentifier(event.receiverAddress),
Amount: transformer.extension.valueToCustomAmount(event.value, event.getExtendedIdentifier()),
},
rosettaTx.Operations = append(rosettaTx.Operations, operations...)
}

rosettaTx.Operations = append(rosettaTx.Operations, operations...)
}

for _, event := range eventsESDTLocalBurn {
Expand Down

0 comments on commit 198ae81

Please sign in to comment.