mirror of
https://github.com/onsonr/sonr.git
synced 2025-03-11 13:29:12 +00:00
- **refactor: remove unused auth components** - **refactor: improve devbox configuration and deployment process** - **refactor: improve devnet and testnet setup** - **fix: update templ version to v0.2.778** - **refactor: rename pkl/net.matrix to pkl/matrix.net** - **refactor: migrate webapp components to nebula** - **refactor: protobuf types** - **chore: update dependencies for improved security and stability** - **feat: implement landing page and vault gateway servers** - **refactor: Migrate data models to new module structure and update related files** - **feature/1121-implement-ucan-validation** - **refactor: Replace hardcoded constants with model types in attns.go** - **feature/1121-implement-ucan-validation** - **chore: add origin Host struct and update main function to handle multiple hosts** - **build: remove unused static files from dwn module** - **build: remove unused static files from dwn module** - **refactor: Move DWN models to common package** - **refactor: move models to pkg/common** - **refactor: move vault web app assets to embed module** - **refactor: update session middleware import path** - **chore: configure port labels and auto-forwarding behavior** - **feat: enhance devcontainer configuration** - **feat: Add UCAN middleware for Echo with flexible token validation** - **feat: add JWT middleware for UCAN authentication** - **refactor: update package URI and versioning in PklProject files** - **fix: correct sonr.pkl import path** - **refactor: move JWT related code to auth package** - **feat: introduce vault configuration retrieval and management** - **refactor: Move vault components to gateway module and update file paths** - **refactor: remove Dexie and SQLite database implementations** - **feat: enhance frontend with PWA features and WASM integration** - **feat: add Devbox features and streamline Dockerfile** - **chore: update dependencies to include TigerBeetle** - **chore(deps): update go version to 1.23** - **feat: enhance devnet setup with PATH environment variable and updated PWA manifest** - **fix: upgrade tigerbeetle-go dependency and remove indirect dependency** - **feat: add PostgreSQL support to devnet and testnet deployments** - **refactor: rename keyshare cookie to token cookie** - **feat: upgrade Go version to 1.23.3 and update dependencies** - **refactor: update devnet and testnet configurations** - **feat: add IPFS configuration for devnet** - **I'll help you update the ipfs.config.pkl to include all the peers from the shell script. Here's the updated configuration:** - **refactor: move mpc package to crypto directory** - **feat: add BIP32 support for various cryptocurrencies** - **feat: enhance ATN.pkl with additional capabilities** - **refactor: simplify smart account and vault attenuation creation** - **feat: add new capabilities to the Attenuation type** - **refactor: Rename MPC files for clarity and consistency** - **feat: add DIDKey support for cryptographic operations** - **feat: add devnet and testnet deployment configurations** - **fix: correct key derivation in bip32 package** - **refactor: rename crypto/bip32 package to crypto/accaddr** - **fix: remove duplicate indirect dependency** - **refactor: move vault package to root directory** - **refactor: update routes for gateway and vault** - **refactor: remove obsolete web configuration file** - **refactor: remove unused TigerBeetle imports and update host configuration** - **refactor: adjust styles directory path** - **feat: add broadcastTx and simulateTx functions to gateway** - **feat: add PinVault handler**
133 lines
3.9 KiB
Go
Executable File
133 lines
3.9 KiB
Go
Executable File
//
|
|
// Copyright Coinbase, Inc. All Rights Reserved.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package mina
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/onsonr/sonr/crypto/core/curves/native/pasta/fq"
|
|
)
|
|
|
|
func TestNewKeys(t *testing.T) {
|
|
pk, sk, err := NewKeys()
|
|
require.NoError(t, err)
|
|
require.NotNil(t, sk)
|
|
require.NotNil(t, pk)
|
|
require.False(t, sk.value.IsZero())
|
|
require.False(t, pk.value.IsIdentity())
|
|
}
|
|
|
|
func TestSecretKeySignTransaction(t *testing.T) {
|
|
// See https://github.com/MinaProtocol/c-reference-signer/blob/master/reference_signer.c#L15
|
|
skValue := &fq.Fq{
|
|
0xca14d6eed923f6e3, 0x61185a1b5e29e6b2, 0xe26d38de9c30753b, 0x3fdf0efb0a5714,
|
|
}
|
|
sk := &SecretKey{value: skValue}
|
|
/*
|
|
This illustrates constructing and signing the following transaction.
|
|
amounts are in nanocodas.
|
|
{
|
|
"common": {
|
|
"fee": "3",
|
|
"fee_token": "1",
|
|
"fee_payer_pk": "B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg",
|
|
"nonce": "200",
|
|
"valid_until": "10000",
|
|
"memo": "E4Yq8cQXC1m9eCYL8mYtmfqfJ5cVdhZawrPQ6ahoAay1NDYfTi44K"
|
|
},
|
|
"body": [
|
|
"Payment",
|
|
{
|
|
"source_pk": "B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg",
|
|
"receiver_pk": "B62qrcFstkpqXww1EkSGrqMCwCNho86kuqBd4FrAAUsPxNKdiPzAUsy",
|
|
"token_id": "1",
|
|
"amount": "42"
|
|
}
|
|
]
|
|
}
|
|
*/
|
|
feePayerPk := new(PublicKey)
|
|
err := feePayerPk.ParseAddress("B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg")
|
|
require.NoError(t, err)
|
|
sourcePk := new(PublicKey)
|
|
err = sourcePk.ParseAddress("B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg")
|
|
require.NoError(t, err)
|
|
receiverPk := new(PublicKey)
|
|
err = receiverPk.ParseAddress("B62qrcFstkpqXww1EkSGrqMCwCNho86kuqBd4FrAAUsPxNKdiPzAUsy")
|
|
require.NoError(t, err)
|
|
txn := &Transaction{
|
|
Fee: 3,
|
|
FeeToken: 1,
|
|
Nonce: 200,
|
|
ValidUntil: 10000,
|
|
Memo: "this is a memo",
|
|
FeePayerPk: feePayerPk,
|
|
SourcePk: sourcePk,
|
|
ReceiverPk: receiverPk,
|
|
TokenId: 1,
|
|
Amount: 42,
|
|
Locked: false,
|
|
Tag: [3]bool{false, false, false},
|
|
NetworkId: MainNet,
|
|
}
|
|
sig, err := sk.SignTransaction(txn)
|
|
require.NoError(t, err)
|
|
pk := sk.GetPublicKey()
|
|
require.NoError(t, pk.VerifyTransaction(sig, txn))
|
|
}
|
|
|
|
func TestSecretKeySignMessage(t *testing.T) {
|
|
// See https://github.com/MinaProtocol/c-reference-signer/blob/master/reference_signer.c#L15
|
|
skValue := &fq.Fq{
|
|
0xca14d6eed923f6e3, 0x61185a1b5e29e6b2, 0xe26d38de9c30753b, 0x3fdf0efb0a5714,
|
|
}
|
|
sk := &SecretKey{value: skValue}
|
|
sig, err := sk.SignMessage("A test message.")
|
|
require.NoError(t, err)
|
|
pk := sk.GetPublicKey()
|
|
require.NoError(t, pk.VerifyMessage(sig, "A test message."))
|
|
}
|
|
|
|
func TestSecretKeySignTransactionStaking(t *testing.T) {
|
|
// https://github.com/MinaProtocol/c-reference-signer/blob/master/reference_signer.c#L128
|
|
skValue := &fq.Fq{
|
|
0xca14d6eed923f6e3, 0x61185a1b5e29e6b2, 0xe26d38de9c30753b, 0x3fdf0efb0a5714,
|
|
}
|
|
sk := &SecretKey{value: skValue}
|
|
|
|
feePayerPk := new(PublicKey)
|
|
err := feePayerPk.ParseAddress("B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg")
|
|
require.NoError(t, err)
|
|
sourcePk := new(PublicKey)
|
|
err = sourcePk.ParseAddress("B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg")
|
|
require.NoError(t, err)
|
|
receiverPk := new(PublicKey)
|
|
err = receiverPk.ParseAddress("B62qkfHpLpELqpMK6ZvUTJ5wRqKDRF3UHyJ4Kv3FU79Sgs4qpBnx5RR")
|
|
require.NoError(t, err)
|
|
txn := &Transaction{
|
|
Fee: 3,
|
|
FeeToken: 1,
|
|
Nonce: 10,
|
|
ValidUntil: 4000,
|
|
Memo: "more delegates more fun",
|
|
FeePayerPk: feePayerPk,
|
|
SourcePk: sourcePk,
|
|
ReceiverPk: receiverPk,
|
|
TokenId: 1,
|
|
Amount: 0,
|
|
Locked: false,
|
|
Tag: [3]bool{false, false, true},
|
|
NetworkId: MainNet,
|
|
}
|
|
sig, err := sk.SignTransaction(txn)
|
|
require.NoError(t, err)
|
|
pk := sk.GetPublicKey()
|
|
require.NoError(t, pk.VerifyTransaction(sig, txn))
|
|
}
|