Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix abi generation #14

Merged
merged 22 commits into from
Nov 18, 2024
Merged
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
a79d5a6
fix: added-json-schema
EdsonAlcala Oct 16, 2024
87d7ff2
fix: json schema for signature
EdsonAlcala Oct 16, 2024
18591bf
update dep
EdsonAlcala Oct 16, 2024
8e2d097
fix: added json schema to missing structs
EdsonAlcala Oct 18, 2024
85a1a4c
p2wpk works
EdsonAlcala Oct 24, 2024
f845ba9
wip: except propagation
EdsonAlcala Oct 24, 2024
2cc1f50
version que funciona
EdsonAlcala Oct 24, 2024
a26617f
wip: managed to do multiple UTXOs
EdsonAlcala Oct 25, 2024
a60302b
fix: added missing values to sequence
EdsonAlcala Oct 25, 2024
8d30253
extend script
EdsonAlcala Oct 25, 2024
27a5006
fix: clean bitcoin utils
EdsonAlcala Oct 25, 2024
da0f3d7
fix: clean integration tests
EdsonAlcala Oct 25, 2024
d9585a9
fix: clippy
EdsonAlcala Oct 28, 2024
eb62431
Merge pull request #10 from EdsonAlcala/feat/ethereum-json-serialisation
EdsonAlcala Oct 28, 2024
e76c4fb
fix: removed unused test and btc context dep from local
EdsonAlcala Oct 28, 2024
a66771d
fix: update import
EdsonAlcala Oct 29, 2024
531288b
fix: moved dependencies to testing utils repo and changed json rpc to…
EdsonAlcala Oct 29, 2024
83ade02
fix: updated cargo to enable wasm build
EdsonAlcala Oct 29, 2024
51caf06
updated dependency of omni testing utilities
EdsonAlcala Oct 29, 2024
42bdfb5
Merge pull request #13 from EdsonAlcala/feat/refactor-tests
EdsonAlcala Oct 29, 2024
f0b3920
fix: export integers module
EdsonAlcala Nov 1, 2024
f312ba6
Merge pull request #14 from EdsonAlcala/feat/export-integers-module
EdsonAlcala Nov 1, 2024
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
16 changes: 8 additions & 8 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -20,21 +20,22 @@ overflow-checks = true
[features]
default = ["all"]
all = ["near", "bitcoin", "evm"]
bitcoin = ["sha2", "schemars"]
bitcoin = ["sha2"]
evm = []
near = []

[dependencies]
rlp = "0.6.1"
hex = "0.4.3"
borsh = { version = "1.0.0", features = ["derive"] }
near-sdk = { version = "5.3.0" }
near-sdk = { version = "5.3.0", features = ["schemars"] }
near-account-id = { version = "1.0.0", features = ["schemars"] }
serde-big-array = "0.5.1"
bs58 = "0.5.1"
serde = "1.0"
serde_json = "1.0"
schemars = { version = "0.8" }
sha2 = { version = "0.10.8", optional = true }
schemars = { version = "0.8.11", optional = true }

[dev-dependencies]
# ethereum
@@ -45,14 +46,13 @@ alloy-primitives = { version = "0.8.3" }
# near
near-primitives = { version = "0.25.0" }
near-crypto = { version = "0.25.0" }
near-jsonrpc-client = { git = "https://github.com/omni-rs/near-jsonrpc-client-rs", tag = "v0.12.1" }
near-workspaces = { version = "0.13.0", features = [
"experimental",
"unstable",
] }
near-jsonrpc-client = { git = "https://github.com/EdsonAlcala/near-jsonrpc-client-rs", tag = "v0.12.1" }

# bitcoin
tempfile = "3.3.0"
bitcoin = { version = "0.32.0", default-features = false, features = [
"std",
"serde",
@@ -61,12 +61,12 @@ bitcoin = { version = "0.32.0", default-features = false, features = [
"secp-lowmemory",
"secp-recovery",
] }
bitcoind = { package = "bitcoind-json-rpc-regtest", version = "0.3.0", features = [
"26_0",
] }

# async
tokio = { version = "1.38", features = ["full"] }

# misc
eyre = "0.6"

# testing
omni-testing-utilities = { git = "https://github.com/Omni-rs/omni-testing-utilities", branch = "main" }
6 changes: 6 additions & 0 deletions src/bitcoin/types/script_buf.rs
Original file line number Diff line number Diff line change
@@ -22,6 +22,12 @@ impl ScriptBuf {
pub const fn from_bytes(bytes: Vec<u8>) -> Self {
Self(bytes)
}

pub fn p2wpkh_script_code(&self) -> Self {
let mut script = vec![0x00, 0x14];
script.extend_from_slice(&self.0);
Self(script)
}
}

pub trait FromHex: Sized {
16 changes: 16 additions & 0 deletions src/bitcoin/types/tx_in/sequence.rs
Original file line number Diff line number Diff line change
@@ -34,6 +34,22 @@ impl Sequence {
///
/// This sequence number enables replace-by-fee and absolute lock time.
pub const ZERO: Self = Self(0);

/// The sequence number that enables absolute lock time but disables replace-by-fee
/// and relative lock time.
pub const ENABLE_LOCKTIME_NO_RBF: Self = Self::MIN_NO_RBF;
/// The sequence number that enables replace-by-fee and absolute lock time but
/// disables relative lock time.
pub const ENABLE_RBF_NO_LOCKTIME: Self = Self(0xFFFFFFFD);

/// The lowest sequence number that does not opt-in for replace-by-fee.
///
/// A transaction is considered to have opted in to replacement of itself
/// if any of it's inputs have a `Sequence` number less than this value
/// (Explicit Signalling [BIP-125]).
///
/// [BIP-125]: <https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki]>
const MIN_NO_RBF: Self = Self(0xFFFFFFFE);
}

impl Default for Sequence {
3 changes: 2 additions & 1 deletion src/evm/evm_transaction.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
use near_sdk::serde::{Deserialize, Serialize};
use rlp::RlpStream;
use schemars::JsonSchema;

use crate::constants::EIP_1559_TYPE;

use super::types::{AccessList, Address, Signature};
use super::utils::parse_eth_address;

#[derive(Debug, Serialize, Deserialize)]
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
#[serde(crate = "near_sdk::serde")]
pub struct EVMTransaction {
pub chain_id: u64,
3 changes: 2 additions & 1 deletion src/evm/types.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
use near_sdk::serde::{Deserialize, Serialize};
use schemars::JsonSchema;

pub type Address = [u8; 20];

pub type AccessList = Vec<(Address, Vec<[u8; 32]>)>;

#[derive(Debug, Serialize, Deserialize)]
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
#[serde(crate = "near_sdk::serde")]
pub struct Signature {
pub v: u64,
3 changes: 2 additions & 1 deletion src/near/near_transaction.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
use borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};
use near_sdk::{borsh, AccountId};
use schemars::JsonSchema;

use super::types::{Action, BlockHash, PublicKey, Signature, U64};

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize)]
#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, JsonSchema)]
#[serde(crate = "near_sdk::serde")]
pub struct NearTransaction {
/// An account on which behalf transaction is signed
145 changes: 133 additions & 12 deletions src/near/types/actions.rs
Original file line number Diff line number Diff line change
@@ -2,10 +2,21 @@ use crate::near::types::PublicKey;
use borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};
use near_sdk::AccountId;
use schemars::JsonSchema;

use super::{U128, U64};

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub enum Action {
/// Create an (sub)account using a transaction `receiver_id` as an ID for
@@ -22,17 +33,47 @@ pub enum Action {
DeleteAccount(DeleteAccountAction),
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct CreateAccountAction {}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct DeployContractAction {
pub code: Vec<u8>,
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct FunctionCallAction {
pub method_name: String,
@@ -41,13 +82,33 @@ pub struct FunctionCallAction {
pub deposit: U128,
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct TransferAction {
pub deposit: U128,
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct StakeAction {
/// Amount of tokens to stake.
@@ -56,7 +117,17 @@ pub struct StakeAction {
pub public_key: PublicKey,
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct AddKeyAction {
/// A public key which will be associated with an access_key
@@ -65,7 +136,17 @@ pub struct AddKeyAction {
pub access_key: AccessKey,
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct AccessKey {
/// Nonce for this access key, used for tx nonce generation. When access key is created, nonce
@@ -76,7 +157,17 @@ pub struct AccessKey {
pub permission: AccessKeyPermission,
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub enum AccessKeyPermission {
FunctionCall(FunctionCallPermission),
@@ -85,22 +176,52 @@ pub enum AccessKeyPermission {
FullAccess,
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct FunctionCallPermission {
pub allowance: Option<U128>,
pub receiver_id: String,
pub method_names: Vec<String>,
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct DeleteKeyAction {
/// A public key associated with the access_key to be deleted.
pub public_key: PublicKey,
}

#[derive(Serialize, Deserialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[derive(
Serialize,
Deserialize,
Debug,
Clone,
BorshSerialize,
BorshDeserialize,
PartialEq,
Eq,
JsonSchema,
)]
#[serde(crate = "near_sdk::serde")]
pub struct DeleteAccountAction {
pub beneficiary_id: AccountId,
7 changes: 3 additions & 4 deletions src/near/types/block_hash.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Deserializer, Serialize};
use schemars::JsonSchema;
use serde::de;
use serde_big_array::BigArray;

#[derive(Serialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)]
#[serde(crate = "near_sdk::serde")]
pub struct BlockHash(#[serde(with = "BigArray")] pub [u8; 32]);
#[derive(Serialize, Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq, JsonSchema)]
pub struct BlockHash(pub [u8; 32]);

impl From<[u8; 32]> for BlockHash {
fn from(data: [u8; 32]) -> Self {
5 changes: 3 additions & 2 deletions src/near/types/integers.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
use borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Deserializer, Serialize};
use schemars::JsonSchema;
use std::fmt;

#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize, Serialize)]
#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize, Serialize, JsonSchema)]
pub struct U64(pub u64);

#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize, Serialize)]
#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize, Serialize, JsonSchema)]
pub struct U128(pub u128);

impl From<u64> for U64 {
2 changes: 1 addition & 1 deletion src/near/types/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
mod actions;
mod block_hash;
mod integers;
pub mod integers;
mod public_key;
mod signature;

Loading
Oops, something went wrong.