diff --git a/solana/vm/accounts_memory_account.go b/solana/vm/accounts_memory_account.go index 5ab7a6e..e7121dd 100644 --- a/solana/vm/accounts_memory_account.go +++ b/solana/vm/accounts_memory_account.go @@ -71,8 +71,6 @@ func (obj *MemoryAccount) Unmarshal(data []byte) error { obj.AccountSize = uint16(GetVirtualAccountSizeInMemory(VirtualAccountTypeTimelock)) case MemoryLayoutNonce: obj.AccountSize = uint16(GetVirtualAccountSizeInMemory(VirtualAccountTypeDurableNonce)) - case MemoryLayoutRelay: - obj.AccountSize = uint16(GetVirtualAccountSizeInMemory(VirtualAccountTypeRelay)) default: return errors.New("unsupported memory layout") } diff --git a/solana/vm/accounts_relay.go b/solana/vm/accounts_relay.go deleted file mode 100644 index 7cf2674..0000000 --- a/solana/vm/accounts_relay.go +++ /dev/null @@ -1,84 +0,0 @@ -package vm - -import ( - "bytes" - "crypto/ed25519" - "fmt" - - "github.com/mr-tron/base58" -) - -const ( - DefaultRelayStateDepth = 63 - DefaultRelayHistoryItems = 32 - - MaxRelayAccountNameSize = 32 -) - -var ( - RelayAccountSize = (8 + //discriminator - 32 + // vm - MaxRelayAccountNameSize + // name - TokenPoolSize + // treasury - 1 + // bump - 1 + // num_levels - 1 + // num_history - 4 + // padding - GetRecentRootsSize(DefaultRelayHistoryItems) + // recent_roots - GetMerkleTreeSize(DefaultRelayStateDepth)) // history -) - -var RelayAccountDiscriminator = []byte{byte(AccountTypeRelay), 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} - -type RelayAccount struct { - Vm ed25519.PublicKey - Name string - - Treasury TokenPool - Bump uint8 - NumLevels uint8 - NumHistory uint8 - - History MerkleTree - RecentRoots RecentRoots -} - -func (obj *RelayAccount) Unmarshal(data []byte) error { - if len(data) < RelayAccountSize { - return ErrInvalidAccountData - } - - var offset int - - var discriminator []byte - getDiscriminator(data, &discriminator, &offset) - if !bytes.Equal(discriminator, RelayAccountDiscriminator) { - return ErrInvalidAccountData - } - - getKey(data, &obj.Vm, &offset) - getFixedString(data, &obj.Name, MaxRelayAccountNameSize, &offset) - getTokenPool(data, &obj.Treasury, &offset) - getUint8(data, &obj.Bump, &offset) - getUint8(data, &obj.NumLevels, &offset) - getUint8(data, &obj.NumHistory, &offset) - offset += 4 // padding - getRecentRoots(data, &obj.RecentRoots, DefaultRelayHistoryItems, &offset) - getMerkleTree(data, &obj.History, DefaultRelayStateDepth, &offset) - - return nil -} - -func (obj *RelayAccount) String() string { - return fmt.Sprintf( - "RelayAccount{vm=%s,name=%s,treasury=%s,bump=%d,num_levels=%d,num_history=%d,recent_roots=%s,history=%s}", - base58.Encode(obj.Vm), - obj.Name, - obj.Treasury.String(), - obj.Bump, - obj.NumLevels, - obj.NumHistory, - obj.RecentRoots.String(), - obj.History.String(), - ) -} diff --git a/solana/vm/address.go b/solana/vm/address.go index 4999237..7e9b7f1 100644 --- a/solana/vm/address.go +++ b/solana/vm/address.go @@ -19,10 +19,6 @@ var ( VmUnlockPdaPrefix = []byte("vm_unlock_pda_account") VmWithdrawReceiptPrefix = []byte("vm_withdraw_receipt_account") VmDepositPdaPrefix = []byte("vm_deposit_pda") - VmRelayPrefix = []byte("vm_relay_account") - VmRelayProofPrefix = []byte("vm_proof_account") - VmRelayVaultPrefix = []byte("vm_relay_vault") - VmRelayCommitmentPrefix = []byte("relay_commitment") VmSwapPdaPrefix = []byte("vm_swap_pda") VmTimelockStatePrefix = []byte("timelock_state") VmTimelockVaultPrefix = []byte("timelock_vault") @@ -87,12 +83,6 @@ func GetStorageAccountAddress(args *GetMemoryAccountAddressArgs) (ed25519.Public ) } -type GetRelayProofAddressArgs struct { - Relay ed25519.PublicKey - MerkleRoot Hash - Commitment Hash -} - type GetVirtualTimelockAccountAddressArgs struct { Mint ed25519.PublicKey VmAuthority ed25519.PublicKey diff --git a/solana/vm/instructions_init_relay.go b/solana/vm/instructions_init_relay.go deleted file mode 100644 index cf1e7cb..0000000 --- a/solana/vm/instructions_init_relay.go +++ /dev/null @@ -1,93 +0,0 @@ -package vm - -import ( - "crypto/ed25519" - - "github.com/code-payments/ocp-server/solana" -) - -const ( - InitRelayInstructionArgsSize = (MaxRelayAccountNameSize + // name - 1 + // relay_bump - 1) // relay_vault_bump -) - -type InitRelayInstructionArgs struct { - Name string - RelayBump uint8 - RelayVaultBump uint8 -} - -type InitRelayInstructionAccounts struct { - VmAuthority ed25519.PublicKey - Vm ed25519.PublicKey - Relay ed25519.PublicKey - RelayVault ed25519.PublicKey - Mint ed25519.PublicKey -} - -func NewInitRelayInstruction( - accounts *InitRelayInstructionAccounts, - args *InitRelayInstructionArgs, -) solana.Instruction { - var offset int - - // Serialize instruction arguments - data := make([]byte, 1+InitRelayInstructionArgsSize) - - putCodeInstruction(data, CodeInstructionInitRelay, &offset) - putFixedString(data, args.Name, MaxRelayAccountNameSize, &offset) - putUint8(data, args.RelayBump, &offset) - putUint8(data, args.RelayVaultBump, &offset) - - return solana.Instruction{ - Program: PROGRAM_ADDRESS, - - // Instruction args - Data: data, - - // Instruction accounts - Accounts: []solana.AccountMeta{ - { - PublicKey: accounts.VmAuthority, - IsWritable: true, - IsSigner: true, - }, - { - PublicKey: accounts.Vm, - IsWritable: true, - IsSigner: false, - }, - { - PublicKey: accounts.Relay, - IsWritable: true, - IsSigner: false, - }, - { - PublicKey: accounts.RelayVault, - IsWritable: true, - IsSigner: false, - }, - { - PublicKey: accounts.Mint, - IsWritable: false, - IsSigner: false, - }, - { - PublicKey: SPL_TOKEN_PROGRAM_ID, - IsWritable: false, - IsSigner: false, - }, - { - PublicKey: SYSTEM_PROGRAM_ID, - IsWritable: false, - IsSigner: false, - }, - { - PublicKey: SYSVAR_RENT_PUBKEY, - IsWritable: false, - IsSigner: false, - }, - }, - } -} diff --git a/solana/vm/instructions_snapshot.go b/solana/vm/instructions_snapshot.go deleted file mode 100644 index da1ec06..0000000 --- a/solana/vm/instructions_snapshot.go +++ /dev/null @@ -1,58 +0,0 @@ -package vm - -import ( - "crypto/ed25519" - - "github.com/code-payments/ocp-server/solana" -) - -const ( - RelaySaveRecentRootInstructionArgsSize = 0 -) - -type RelaySaveRecentRootInstructionArgs struct { -} - -type RelaySaveRecentRootInstructionAccounts struct { - VmAuthority ed25519.PublicKey - Vm ed25519.PublicKey - Relay ed25519.PublicKey -} - -func NewRelaySaveRecentRootInstruction( - accounts *RelaySaveRecentRootInstructionAccounts, - args *RelaySaveRecentRootInstructionArgs, -) solana.Instruction { - var offset int - - // Serialize instruction arguments - data := make([]byte, 1+RelaySaveRecentRootInstructionArgsSize) - - putCodeInstruction(data, CodeInstructionSnapshot, &offset) - - return solana.Instruction{ - Program: PROGRAM_ADDRESS, - - // Instruction args - Data: data, - - // Instruction accounts - Accounts: []solana.AccountMeta{ - { - PublicKey: accounts.VmAuthority, - IsWritable: true, - IsSigner: true, - }, - { - PublicKey: accounts.Vm, - IsWritable: true, - IsSigner: false, - }, - { - PublicKey: accounts.Relay, - IsWritable: true, - IsSigner: false, - }, - }, - } -} diff --git a/solana/vm/types_memory_layout.go b/solana/vm/types_memory_layout.go index 0b8581f..3d6579d 100644 --- a/solana/vm/types_memory_layout.go +++ b/solana/vm/types_memory_layout.go @@ -24,8 +24,6 @@ func GetPageSizeFromMemoryLayout(layout MemoryLayout) uint32 { return GetVirtualAccountSizeInMemory(VirtualAccountTypeDurableNonce) case MemoryLayoutTimelock: return GetVirtualAccountSizeInMemory(VirtualAccountTypeTimelock) - case MemoryLayoutRelay: - return GetVirtualAccountSizeInMemory(VirtualAccountTypeRelay) } return 0 } diff --git a/solana/vm/types_recent_roots.go b/solana/vm/types_recent_roots.go deleted file mode 100644 index 96c9a57..0000000 --- a/solana/vm/types_recent_roots.go +++ /dev/null @@ -1,51 +0,0 @@ -package vm - -import ( - "fmt" -) - -const ( - minRecentRootsSize = (1 + // offset - 1 + // num_items - 6) // padding -) - -type RecentRoots struct { - Items HashArray - Offset uint8 - NumItems uint8 -} - -func (obj *RecentRoots) Unmarshal(data []byte, length int) error { - if len(data) < 1 { - return ErrInvalidAccountData - } - - var offset int - - getStaticHashArray(data, &obj.Items, length, &offset) - getUint8(data, &obj.Offset, &offset) - getUint8(data, &obj.NumItems, &offset) - offset += 6 // padding - - return nil -} - -func (obj *RecentRoots) String() string { - return fmt.Sprintf( - "RecentRoots{items=%s,offset=%d,num_items=%d}", - obj.Items.String(), - obj.Offset, - obj.NumItems, - ) -} - -func getRecentRoots(src []byte, dst *RecentRoots, length int, offset *int) { - dst.Unmarshal(src[*offset:], length) - *offset += GetRecentRootsSize(len(dst.Items)) -} - -func GetRecentRootsSize(length int) int { - return (minRecentRootsSize + - length*HashSize) // items -} diff --git a/solana/vm/types_virtual_account_type.go b/solana/vm/types_virtual_account_type.go index b50c11c..6fd76bb 100644 --- a/solana/vm/types_virtual_account_type.go +++ b/solana/vm/types_virtual_account_type.go @@ -16,8 +16,6 @@ func GetVirtualAccountTypeFromMemoryLayout(layout MemoryLayout) (VirtualAccountT return VirtualAccountTypeDurableNonce, nil case MemoryLayoutTimelock: return VirtualAccountTypeTimelock, nil - case MemoryLayoutRelay: - return VirtualAccountTypeRelay, nil default: return 0, errors.New("memory layout doesn't have a defined virtual account type") } diff --git a/solana/vm/virtual_accounts.go b/solana/vm/virtual_accounts.go index a7a97b8..84a05f8 100644 --- a/solana/vm/virtual_accounts.go +++ b/solana/vm/virtual_accounts.go @@ -4,8 +4,6 @@ func GetVirtualAccountSize(accountType VirtualAccountType) uint32 { switch accountType { case VirtualAccountTypeDurableNonce: return VirtualDurableNonceSize - case VirtualAccountTypeRelay: - return VirtualRelayAccountSize case VirtualAccountTypeTimelock: return VirtualTimelockAccountSize default: diff --git a/solana/vm/virtual_accounts_relay_account.go b/solana/vm/virtual_accounts_relay_account.go deleted file mode 100644 index 60c39db..0000000 --- a/solana/vm/virtual_accounts_relay_account.go +++ /dev/null @@ -1,60 +0,0 @@ -package vm - -import ( - "crypto/ed25519" - "fmt" - - "github.com/mr-tron/base58" -) - -const VirtualRelayAccountSize = (32 + // target - 32) // destination - -type VirtualRelayAccount struct { - Target ed25519.PublicKey - Destination ed25519.PublicKey -} - -func (obj *VirtualRelayAccount) Marshal() []byte { - data := make([]byte, VirtualRelayAccountSize) - - var offset int - - putKey(data, obj.Target, &offset) - putKey(data, obj.Destination, &offset) - - return data -} - -func (obj *VirtualRelayAccount) UnmarshalDirectly(data []byte) error { - if len(data) < VirtualRelayAccountSize { - return ErrInvalidVirtualAccountData - } - - var offset int - - getKey(data, &obj.Target, &offset) - getKey(data, &obj.Destination, &offset) - - return nil -} - -func (obj *VirtualRelayAccount) UnmarshalFromMemory(data []byte) error { - if len(data) == 0 { - return ErrInvalidVirtualAccountData - } - - if data[0] != uint8(VirtualAccountTypeRelay) { - return ErrInvalidVirtualAccountType - } - - return obj.UnmarshalDirectly(data[1:]) -} - -func (obj *VirtualRelayAccount) String() string { - return fmt.Sprintf( - "VirtualRelayAccount{target=%s,destination=%s}", - base58.Encode(obj.Target), - base58.Encode(obj.Destination), - ) -} diff --git a/solana/vm/virtual_instructions_external_relay.go b/solana/vm/virtual_instructions_external_relay.go deleted file mode 100644 index 1cb4945..0000000 --- a/solana/vm/virtual_instructions_external_relay.go +++ /dev/null @@ -1,32 +0,0 @@ -package vm - -const ( - ExternalRelayVirtrualInstructionDataSize = (8 + // amount - HashSize + // transcript - HashSize + // recent_root - HashSize) // commitment -) - -type ExternalRelayVirtualInstructionArgs struct { - Amount uint64 - Transcript Hash - RecentRoot Hash - Commitment Hash -} - -func NewExternalRelayVirtualInstruction( - args *ExternalRelayVirtualInstructionArgs, -) VirtualInstruction { - var offset int - data := make([]byte, ExternalRelayVirtrualInstructionDataSize) - - putUint64(data, args.Amount, &offset) - putHash(data, args.Transcript, &offset) - putHash(data, args.RecentRoot, &offset) - putHash(data, args.Commitment, &offset) - - return VirtualInstruction{ - Opcode: OpcodeExternalRelay, - Data: data, - } -} diff --git a/solana/vm/virtual_instructions_relay.go b/solana/vm/virtual_instructions_relay.go deleted file mode 100644 index a0a4550..0000000 --- a/solana/vm/virtual_instructions_relay.go +++ /dev/null @@ -1,32 +0,0 @@ -package vm - -const ( - RelayVirtrualInstructionDataSize = (8 + // amount - HashSize + // transcript - HashSize + // recent_root - HashSize) // commitment -) - -type RelayVirtualInstructionArgs struct { - Amount uint64 - Transcript Hash - RecentRoot Hash - Commitment Hash -} - -func NewRelayVirtualInstruction( - args *RelayVirtualInstructionArgs, -) VirtualInstruction { - var offset int - data := make([]byte, RelayVirtrualInstructionDataSize) - - putUint64(data, args.Amount, &offset) - putHash(data, args.Transcript, &offset) - putHash(data, args.RecentRoot, &offset) - putHash(data, args.Commitment, &offset) - - return VirtualInstruction{ - Opcode: OpcodeRelay, - Data: data, - } -}