Skip to content

Commit c9537dc

Browse files
author
jeffyanta
authored
Currency creator cash give/grab support (#202)
* SubmitIntent * Workers * Additional cleanup of intents model
1 parent acd13ff commit c9537dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+1328
-1480
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
filippo.io/edwards25519 v1.1.0
77
github.com/aws/aws-sdk-go-v2 v0.17.0
88
github.com/bits-and-blooms/bloom/v3 v3.1.0
9-
github.com/code-payments/code-protobuf-api v1.19.1-0.20250827160012-3edaffb82d79
9+
github.com/code-payments/code-protobuf-api v1.19.1-0.20250909140022-32d989862f5a
1010
github.com/code-payments/code-vm-indexer v0.1.11-0.20241028132209-23031e814fba
1111
github.com/emirpasic/gods v1.12.0
1212
github.com/envoyproxy/protoc-gen-validate v1.2.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnht
8080
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
8181
github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
8282
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
83-
github.com/code-payments/code-protobuf-api v1.19.1-0.20250827160012-3edaffb82d79 h1:Td/jOwNQCuSaTL6NZstWSMxgjcyVhkC1Q/BmVRqY6qo=
84-
github.com/code-payments/code-protobuf-api v1.19.1-0.20250827160012-3edaffb82d79/go.mod h1:ee6TzKbgMS42ZJgaFEMG3c4R3dGOiffHSu6MrY7WQvs=
83+
github.com/code-payments/code-protobuf-api v1.19.1-0.20250909140022-32d989862f5a h1:KJHqqNz1gEOhjg97mw1B81Fvd4CClWeaSJw2AMOqSkA=
84+
github.com/code-payments/code-protobuf-api v1.19.1-0.20250909140022-32d989862f5a/go.mod h1:ee6TzKbgMS42ZJgaFEMG3c4R3dGOiffHSu6MrY7WQvs=
8585
github.com/code-payments/code-vm-indexer v0.1.11-0.20241028132209-23031e814fba h1:Bkp+gmeb6Y2PWXfkSCTMBGWkb2P1BujRDSjWeI+0j5I=
8686
github.com/code-payments/code-vm-indexer v0.1.11-0.20241028132209-23031e814fba/go.mod h1:jSiifpiBpyBQ8q2R0MGEbkSgWC6sbdRTyDBntmW+j1E=
8787
github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6 h1:NmTXa/uVnDyp0TY5MKi197+3HWcnYWfnHGyaFthlnGw=

pkg/code/aml/guard_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ func makeSendPublicPaymentIntent(t *testing.T, owner *common.Account, usdMarketV
176176
IsWithdrawal: isWithdraw,
177177
},
178178

179+
MintAccount: common.CoreMintAccount.PublicKey().ToBase58(),
180+
179181
InitiatorOwnerAccount: owner.PublicKey().ToBase58(),
180182

181183
State: intent.StatePending,

pkg/code/async/account/gift_card.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ import (
1717

1818
"github.com/code-payments/code-server/pkg/code/balance"
1919
"github.com/code-payments/code-server/pkg/code/common"
20+
currency_util "github.com/code-payments/code-server/pkg/code/currency"
2021
code_data "github.com/code-payments/code-server/pkg/code/data"
2122
"github.com/code-payments/code-server/pkg/code/data/account"
2223
"github.com/code-payments/code-server/pkg/code/data/action"
2324
"github.com/code-payments/code-server/pkg/code/data/fulfillment"
2425
"github.com/code-payments/code-server/pkg/code/data/intent"
25-
"github.com/code-payments/code-server/pkg/currency"
2626
"github.com/code-payments/code-server/pkg/metrics"
2727
"github.com/code-payments/code-server/pkg/pointer"
2828
"github.com/code-payments/code-server/pkg/retry"
@@ -300,7 +300,12 @@ func updateAutoReturnFulfillmentPreSorting(
300300
}
301301

302302
func insertAutoReturnIntentRecord(ctx context.Context, data code_data.Provider, giftCardIssuedIntent *intent.Record, isVoidedByUser bool) error {
303-
usdExchangeRecord, err := data.GetExchangeRate(ctx, currency.USD, time.Now())
303+
mintAccount, err := common.NewAccountFromPublicKeyString(giftCardIssuedIntent.MintAccount)
304+
if err != nil {
305+
return err
306+
}
307+
308+
usdMarketValue, err := currency_util.CalculateUsdMarketValue(ctx, data, mintAccount, giftCardIssuedIntent.SendPublicPaymentMetadata.Quantity, time.Now())
304309
if err != nil {
305310
return err
306311
}
@@ -312,6 +317,8 @@ func insertAutoReturnIntentRecord(ctx context.Context, data code_data.Provider,
312317
IntentId: getAutoReturnIntentId(giftCardIssuedIntent.IntentId),
313318
IntentType: intent.ReceivePaymentsPublicly,
314319

320+
MintAccount: common.CoreMintAccount.PublicKey().ToBase58(),
321+
315322
InitiatorOwnerAccount: giftCardIssuedIntent.InitiatorOwnerAccount,
316323

317324
ReceivePaymentsPubliclyMetadata: &intent.ReceivePaymentsPubliclyMetadata{
@@ -326,7 +333,7 @@ func insertAutoReturnIntentRecord(ctx context.Context, data code_data.Provider,
326333
OriginalExchangeRate: giftCardIssuedIntent.SendPublicPaymentMetadata.ExchangeRate,
327334
OriginalNativeAmount: giftCardIssuedIntent.SendPublicPaymentMetadata.NativeAmount,
328335

329-
UsdMarketValue: usdExchangeRecord.Rate * float64(giftCardIssuedIntent.SendPublicPaymentMetadata.Quantity) / float64(common.CoreMintQuarksPerUnit),
336+
UsdMarketValue: usdMarketValue,
330337
},
331338

332339
State: intent.StateConfirmed,

pkg/code/async/account/service.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ func (p *service) mustLoadAirdropper(ctx context.Context) {
6565
})
6666

6767
err := func() error {
68+
vmConfig, err := common.GetVmConfigForMint(ctx, p.data, common.CoreMintAccount)
69+
if err != nil {
70+
return err
71+
}
72+
6873
vaultRecord, err := p.data.GetKey(ctx, p.conf.airdropperOwnerPublicKey.Get(ctx))
6974
if err != nil {
7075
return err
@@ -75,7 +80,7 @@ func (p *service) mustLoadAirdropper(ctx context.Context) {
7580
return err
7681
}
7782

78-
timelockAccounts, err := ownerAccount.GetTimelockAccounts(common.CodeVmAccount, common.CoreMintAccount)
83+
timelockAccounts, err := ownerAccount.GetTimelockAccounts(vmConfig)
7984
if err != nil {
8085
return err
8186
}

pkg/code/async/account/testutil.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/code-payments/code-server/pkg/code/data/currency"
1919
"github.com/code-payments/code-server/pkg/code/data/fulfillment"
2020
"github.com/code-payments/code-server/pkg/code/data/intent"
21+
currency_lib "github.com/code-payments/code-server/pkg/currency"
2122
"github.com/code-payments/code-server/pkg/pointer"
2223
"github.com/code-payments/code-server/pkg/testutil"
2324
)
@@ -57,10 +58,11 @@ func setup(t *testing.T) *testEnv {
5758
}
5859

5960
func (e *testEnv) generateRandomGiftCard(t *testing.T, creationTs time.Time) *testGiftCard {
60-
vm := testutil.NewRandomAccount(t)
6161
authority := testutil.NewRandomAccount(t)
6262

63-
timelockAccounts, err := authority.GetTimelockAccounts(vm, common.CoreMintAccount)
63+
vmConfig := testutil.NewRandomVmConfig(t, true)
64+
65+
timelockAccounts, err := authority.GetTimelockAccounts(vmConfig)
6466
require.NoError(t, err)
6567

6668
accountInfoRecord := &account.Record{
@@ -81,13 +83,15 @@ func (e *testEnv) generateRandomGiftCard(t *testing.T, creationTs time.Time) *te
8183
IntentId: testutil.NewRandomAccount(t).PublicKey().ToBase58(),
8284
IntentType: intent.SendPublicPayment,
8385

86+
MintAccount: vmConfig.Mint.PublicKey().ToBase58(),
87+
8488
InitiatorOwnerAccount: testutil.NewRandomAccount(t).PublicKey().ToBase58(),
8589

8690
SendPublicPaymentMetadata: &intent.SendPublicPaymentMetadata{
8791
DestinationTokenAccount: accountInfoRecord.TokenAccount,
8892
Quantity: common.ToCoreMintQuarks(12345),
8993

90-
ExchangeCurrency: common.CoreMintSymbol,
94+
ExchangeCurrency: currency_lib.USD,
9195
ExchangeRate: 1.0,
9296
NativeAmount: 12345,
9397
UsdMarketValue: 1000.0,

pkg/code/async/airdrop/config.go

Lines changed: 0 additions & 41 deletions
This file was deleted.

pkg/code/async/airdrop/indexer.go

Lines changed: 0 additions & 42 deletions
This file was deleted.

pkg/code/async/airdrop/integration.go

Lines changed: 0 additions & 16 deletions
This file was deleted.

pkg/code/async/airdrop/nonce.go

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)