mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-04 18:31:41 +00:00
feature/1220 origin handle exists method (#1241)
* feat: add docs and CI workflow for publishing to onsonr.dev * (refactor): Move hway,motr executables to their own repos * feat: simplify devnet and testnet configurations * refactor: update import path for didcrypto package * docs(networks): Add README with project overview, architecture, and community links * refactor: Move network configurations to deploy directory * build: update golang version to 1.23 * refactor: move logger interface to appropriate package * refactor: Move devnet configuration to networks/devnet * chore: improve release process with date variable * (chore): Move Crypto Library * refactor: improve code structure and readability in DID module * feat: integrate Trunk CI checks * ci: optimize CI workflow by removing redundant build jobs --------- Co-authored-by: Darp Alakun <i@prad.nu>
This commit is contained in:
Executable
+132
@@ -0,0 +1,132 @@
|
||||
//
|
||||
// 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))
|
||||
}
|
||||
Reference in New Issue
Block a user