Skip to content

Commit

Permalink
temporarily replace import with code from raito utils hex
Browse files Browse the repository at this point in the history
  • Loading branch information
lana-shanghai committed Feb 14, 2025
1 parent ecf99da commit 442512e
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 18 deletions.
33 changes: 17 additions & 16 deletions .github/workflows/contracts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,27 @@ on: [push, pull_request]
permissions: read-all

jobs:
fmt:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@main

- name: Set up Scarb
uses: software-mansion/setup-scarb@v1
with:
scarb-version: "2.9.2"

- name: Check cairo format
run: scarb fmt --check
working-directory: packages/onchain
- name: Set up SNForge
uses: foundry-rs/setup-snfoundry@v3
with:
starknet-foundry-version: "0.36.0"

- name: Build cairo onchain
run: scarb build
- name: Run tests and generate report
run: snforge test
working-directory: packages/onchain

test:
fmt:
runs-on: ubuntu-latest
steps:
- name: Checkout code
Expand All @@ -35,11 +36,11 @@ jobs:
with:
scarb-version: "2.9.2"

- name: Set up SNForge
uses: foundry-rs/setup-snfoundry@v3
with:
starknet-foundry-version: "0.36.0"
- name: Check cairo format
run: scarb fmt --check
working-directory: packages/onchain

- name: Build cairo onchain
run: scarb build
working-directory: packages/onchain

- name: Run tests and generate report
run: snforge test
working-directory: packages/onchain
61 changes: 61 additions & 0 deletions packages/onchain/src/broly_utils/taproot_utils.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,64 @@ pub fn extract_p2tr_tweaked_pubkey(script: Array<u8>) -> ByteArray {
let hrp = "bc";
return encode(@hrp, @tweaked_pubkey, 90);
}

// TODO: remove the functions below, import failed, but they are from
// https://github.com/keep-starknet-strange/raito/blob/main/packages/utils/src/hex.cairo
// Gets `Digest` from reversed `ByteArray`.
pub fn hex_to_hash_rev(hex_string: ByteArray) -> Digest {
let mut result: Array<u32> = array![];
let mut i = 0;
let mut unit: u32 = 0;
let len = hex_string.len();
while i != len {
if (i != 0 && i % 8 == 0) {
result.append(unit);
unit = 0;
}
let hi = hex_char_to_nibble(hex_string[len - i - 2]);
let lo = hex_char_to_nibble(hex_string[len - i - 1]);
unit = (unit * 256) + (hi * 16 + lo).into();
i += 2;
};
result.append(unit);

Digest {
value: [
*result[0], *result[1], *result[2], *result[3], *result[4], *result[5], *result[6],
*result[7],
],
}
}

/// Converts bytes to hex (base16).
pub fn to_hex(data: @ByteArray) -> ByteArray {
let alphabet: @ByteArray = @"0123456789abcdef";
let mut result: ByteArray = Default::default();

let mut i = 0;
while i != data.len() {
let value: u32 = data[i].into();
let (l, r) = core::traits::DivRem::div_rem(value, 16);
result.append_byte(alphabet.at(l).unwrap());
result.append_byte(alphabet.at(r).unwrap());
i += 1;
};

result
}

pub fn hex_char_to_nibble(hex_char: u8) -> u8 {
if hex_char >= 48 && hex_char <= 57 {
// 0-9
hex_char - 48
} else if hex_char >= 65 && hex_char <= 70 {
// A-F
hex_char - 55
} else if hex_char >= 97 && hex_char <= 102 {
// a-f
hex_char - 87
} else {
panic!("Invalid hex character: {hex_char}");
0
}
}
3 changes: 1 addition & 2 deletions packages/onchain/src/orderbook/orderbook.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ mod Orderbook {
use core::array::{ToSpanTrait, SpanTrait};
use consensus::{types::transaction::Transaction};
use onchain::orderbook::interface::Status;
use onchain::broly_utils::taproot_utils::extract_p2tr_tweaked_pubkey;
use onchain::broly_utils::taproot_utils::{extract_p2tr_tweaked_pubkey, hex_to_hash_rev, to_hex};
use openzeppelin::utils::serde::SerializedAppend;
use openzeppelin_token::erc20::{ERC20ABIDispatcher, ERC20ABIDispatcherTrait};
use starknet::storage::{
Expand All @@ -16,7 +16,6 @@ mod Orderbook {
use starknet::{ContractAddress, get_caller_address, get_contract_address, get_block_number};
use starknet::{SyscallResultTrait, syscalls::call_contract_syscall};
use utils::hash::Digest;
use utils::hex::{hex_to_hash_rev, to_hex};
use utu_relay::bitcoin::block::{BlockHeader, BlockHashImpl, BlockHashTrait};
use utu_relay::interfaces::HeightProof;

Expand Down

0 comments on commit 442512e

Please sign in to comment.