Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package processors
package sac

import (
"math/big"
Expand Down Expand Up @@ -452,7 +452,7 @@ func AssetToContractData(isNative bool, code, issuer string, contractID [32]byte
//
// Warning: Only for use in tests. This does not create the accompanied TTLEntry which would typically be created by core.
func BalanceToContractData(assetContractId, holderID [32]byte, amt uint64) xdr.LedgerEntryData {
return balanceToContractData(assetContractId, holderID, xdr.Int128Parts{
return BalanceInt128ToContractData(assetContractId, holderID, xdr.Int128Parts{
Lo: xdr.Uint64(amt),
Hi: 0,
})
Expand Down Expand Up @@ -488,7 +488,7 @@ func ContractBalanceLedgerKey(assetContractId, holderID [32]byte) xdr.LedgerKey
}
}

func balanceToContractData(assetContractId, holderID [32]byte, amt xdr.Int128Parts) xdr.LedgerEntryData {
func BalanceInt128ToContractData(assetContractId, holderID [32]byte, amt xdr.Int128Parts) xdr.LedgerEntryData {
ledgerKey := ContractBalanceLedgerKey(assetContractId, holderID)

amountSym := xdr.ScSymbol("amount")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"math/big"

"github.com/stellar/go/ingest"
"github.com/stellar/go/ingest/sac"
"github.com/stellar/go/services/horizon/internal/db2/history"
"github.com/stellar/go/support/errors"
"github.com/stellar/go/xdr"
Expand Down Expand Up @@ -74,8 +75,8 @@ func (p *AssetStatsProcessor) ProcessChange(ctx context.Context, change ingest.C
if ledgerEntry == nil {
ledgerEntry = change.Pre
}
asset := AssetFromContractData(*ledgerEntry, p.networkPassphrase)
_, _, balanceFound := ContractBalanceFromContractData(*ledgerEntry, p.networkPassphrase)
asset := sac.AssetFromContractData(*ledgerEntry, p.networkPassphrase)
_, _, balanceFound := sac.ContractBalanceFromContractData(*ledgerEntry, p.networkPassphrase)
if asset == nil && !balanceFound {
return nil
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/stretchr/testify/assert"

"github.com/stellar/go/ingest"
"github.com/stellar/go/ingest/sac"
"github.com/stellar/go/services/horizon/internal/db2/history"
"github.com/stellar/go/xdr"

Expand Down Expand Up @@ -524,12 +525,12 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestInsertContractID() {
}
eurID, err := trustLine.Asset.ToAsset().ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

usdID, err := xdr.MustNewCreditAsset("USD", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
usdContractData, err := AssetToContractData(false, "USD", trustLineIssuer.Address(), usdID)
usdContractData, err := sac.AssetToContractData(false, "USD", trustLineIssuer.Address(), usdID)
s.Assert().NoError(err)

lastModifiedLedgerSeq := xdr.Uint32(1234)
Expand Down Expand Up @@ -638,7 +639,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestInsertContractBalance() {
Type: xdr.LedgerEntryTypeContractData,
Post: &xdr.LedgerEntry{
LastModifiedLedgerSeq: lastModifiedLedgerSeq,
Data: BalanceToContractData(usdID, [32]byte{1}, 200),
Data: sac.BalanceToContractData(usdID, [32]byte{1}, 200),
},
}))

Expand Down Expand Up @@ -704,11 +705,11 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestUpdateContractBalance() {
Type: xdr.LedgerEntryTypeContractData,
Pre: &xdr.LedgerEntry{
LastModifiedLedgerSeq: lastModifiedLedgerSeq,
Data: BalanceToContractData(usdID, [32]byte{1}, 100),
Data: sac.BalanceToContractData(usdID, [32]byte{1}, 100),
},
Post: &xdr.LedgerEntry{
LastModifiedLedgerSeq: lastModifiedLedgerSeq,
Data: BalanceToContractData(usdID, [32]byte{1}, 300),
Data: sac.BalanceToContractData(usdID, [32]byte{1}, 300),
},
}))

Expand Down Expand Up @@ -763,7 +764,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestRemoveContractBalance() {
Type: xdr.LedgerEntryTypeContractData,
Pre: &xdr.LedgerEntry{
LastModifiedLedgerSeq: lastModifiedLedgerSeq,
Data: BalanceToContractData(usdID, [32]byte{1}, 200),
Data: sac.BalanceToContractData(usdID, [32]byte{1}, 200),
},
}))

Expand Down Expand Up @@ -821,12 +822,12 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestInsertContractIDWithBalance() {
}
eurID, err := trustLine.Asset.ToAsset().ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

usdID, err := xdr.MustNewCreditAsset("USD", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
usdContractData, err := AssetToContractData(false, "USD", trustLineIssuer.Address(), usdID)
usdContractData, err := sac.AssetToContractData(false, "USD", trustLineIssuer.Address(), usdID)
s.Assert().NoError(err)

lastModifiedLedgerSeq := xdr.Uint32(1234)
Expand Down Expand Up @@ -867,7 +868,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestInsertContractIDWithBalance() {
Type: xdr.LedgerEntryTypeContractData,
Post: &xdr.LedgerEntry{
LastModifiedLedgerSeq: lastModifiedLedgerSeq,
Data: BalanceToContractData(usdID, [32]byte{1}, 150),
Data: sac.BalanceToContractData(usdID, [32]byte{1}, 150),
},
}))

Expand All @@ -876,7 +877,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestInsertContractIDWithBalance() {
Type: xdr.LedgerEntryTypeContractData,
Post: &xdr.LedgerEntry{
LastModifiedLedgerSeq: lastModifiedLedgerSeq,
Data: BalanceToContractData(btcID, [32]byte{1}, 20),
Data: sac.BalanceToContractData(btcID, [32]byte{1}, 20),
},
}))

Expand Down Expand Up @@ -1096,7 +1097,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestUpdateContractID() {

eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand Down Expand Up @@ -1231,7 +1232,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestUpdateContractIDWithBalance() {

eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand All @@ -1247,7 +1248,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestUpdateContractIDWithBalance() {
Type: xdr.LedgerEntryTypeContractData,
Post: &xdr.LedgerEntry{
LastModifiedLedgerSeq: lastModifiedLedgerSeq,
Data: BalanceToContractData(eurID, [32]byte{1}, 150),
Data: sac.BalanceToContractData(eurID, [32]byte{1}, 150),
},
}))
keyHash := getKeyHashForBalance(s.T(), eurID, [32]byte{1})
Expand Down Expand Up @@ -1350,7 +1351,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestUpdateContractIDError() {
s.Assert().NoError(err)
eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand Down Expand Up @@ -1395,7 +1396,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestUpdateTrustlineAndContractIDErr
s.Assert().NoError(err)
eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand Down Expand Up @@ -1470,7 +1471,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestRemoveContractIDError() {

eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand All @@ -1496,7 +1497,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestUpdateTrustlineAndRemoveContrac

eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand Down Expand Up @@ -2085,7 +2086,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestRemoveContractID() {

eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand Down Expand Up @@ -2138,7 +2139,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestUpdateTrustlineAndRemoveContrac

eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand Down Expand Up @@ -2238,7 +2239,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestRemoveContractIDFromZeroRow() {

eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand Down Expand Up @@ -2292,7 +2293,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestRemoveContractIDAndBalanceZeroR

eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand All @@ -2308,7 +2309,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestRemoveContractIDAndBalanceZeroR
Type: xdr.LedgerEntryTypeContractData,
Pre: &xdr.LedgerEntry{
LastModifiedLedgerSeq: lastModifiedLedgerSeq,
Data: BalanceToContractData(eurID, [32]byte{1}, 9),
Data: sac.BalanceToContractData(eurID, [32]byte{1}, 9),
},
}))
keyHash := getKeyHashForBalance(s.T(), eurID, [32]byte{1})
Expand All @@ -2330,7 +2331,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestRemoveContractIDAndBalanceZeroR
Type: xdr.LedgerEntryTypeContractData,
Pre: &xdr.LedgerEntry{
LastModifiedLedgerSeq: lastModifiedLedgerSeq,
Data: BalanceToContractData(eurID, [32]byte{2}, 1),
Data: sac.BalanceToContractData(eurID, [32]byte{2}, 1),
},
}))
otherKeyHash := getKeyHashForBalance(s.T(), eurID, [32]byte{2})
Expand Down Expand Up @@ -2406,7 +2407,7 @@ func (s *AssetStatsProcessorTestSuiteLedger) TestRemoveContractIDAndRow() {

eurID, err := xdr.MustNewCreditAsset("EUR", trustLineIssuer.Address()).ContractID("")
s.Assert().NoError(err)
eurContractData, err := AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
eurContractData, err := sac.AssetToContractData(false, "EUR", trustLineIssuer.Address(), eurID)
s.Assert().NoError(err)

err = s.processor.ProcessChange(s.ctx, ingest.Change{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"math/big"

"github.com/stellar/go/ingest"
"github.com/stellar/go/ingest/sac"
"github.com/stellar/go/services/horizon/internal/db2/history"
"github.com/stellar/go/support/errors"
"github.com/stellar/go/xdr"
Expand Down Expand Up @@ -107,7 +108,7 @@ func (s *ContractAssetStatSet) GetAssetToContractMap() map[xdr.Hash]*xdr.Asset {

func (s *ContractAssetStatSet) ingestAssetContractMetadata(change ingest.Change) (bool, error) {
if change.Pre != nil {
asset := AssetFromContractData(*change.Pre, s.networkPassphrase)
asset := sac.AssetFromContractData(*change.Pre, s.networkPassphrase)
if asset == nil {
return false, nil
}
Expand All @@ -123,13 +124,13 @@ func (s *ContractAssetStatSet) ingestAssetContractMetadata(change ingest.Change)
// The contract id for any soroban contract should never change and
// therefore we return a fatal ingestion error if we encounter
// a stellar asset changing contract ids.
postAsset := AssetFromContractData(*change.Post, s.networkPassphrase)
postAsset := sac.AssetFromContractData(*change.Post, s.networkPassphrase)
if postAsset == nil || !(*postAsset).Equals(*asset) {
return false, ingest.NewStateError(fmt.Errorf("asset contract changed asset"))
}
return true, nil
} else if change.Post != nil {
asset := AssetFromContractData(*change.Post, s.networkPassphrase)
asset := sac.AssetFromContractData(*change.Post, s.networkPassphrase)
if asset == nil {
return false, nil
}
Expand Down Expand Up @@ -161,7 +162,7 @@ func (s *ContractAssetStatSet) ingestContractAssetBalance(ctx context.Context, c
return nil
}

_, postAmt, postOk := ContractBalanceFromContractData(*change.Post, s.networkPassphrase)
_, postAmt, postOk := sac.ContractBalanceFromContractData(*change.Post, s.networkPassphrase)
// we only ingest created ledger entries if we determine that they resemble the shape of
// a Stellar Asset Contract balance ledger entry
if !postOk {
Expand Down Expand Up @@ -211,7 +212,7 @@ func (s *ContractAssetStatSet) ingestContractAssetBalance(ctx context.Context, c
// entry from our db when the entry is removed from the ledger.
s.removedBalances = append(s.removedBalances, keyHash)

_, preAmt, ok := ContractBalanceFromContractData(*change.Pre, s.networkPassphrase)
_, preAmt, ok := sac.ContractBalanceFromContractData(*change.Pre, s.networkPassphrase)
if !ok {
return nil
}
Expand All @@ -236,14 +237,14 @@ func (s *ContractAssetStatSet) ingestContractAssetBalance(ctx context.Context, c
return nil
}

holder, amt, ok := ContractBalanceFromContractData(*change.Pre, s.networkPassphrase)
holder, amt, ok := sac.ContractBalanceFromContractData(*change.Pre, s.networkPassphrase)
if !ok {
return nil
}

// if the updated ledger entry is not in the expected format then this
// cannot be emitted by the stellar asset contract, so ignore it
postHolder, postAmt, postOk := ContractBalanceFromContractData(*change.Post, s.networkPassphrase)
postHolder, postAmt, postOk := sac.ContractBalanceFromContractData(*change.Post, s.networkPassphrase)
if !postOk || postHolder != holder {
return nil
}
Expand Down
Loading
Loading