Skip to content

Commit

Permalink
[gh-2295] add derive_multi_sign_address.
Browse files Browse the repository at this point in the history
  • Loading branch information
Feliciss committed Jul 27, 2024
1 parent 1ad51d5 commit 5faade5
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ use crate::natives::gas_parameter::native::MUL;
use crate::natives::rooch_framework::bitcoin_address::GasParameters;

crate::natives::gas_parameter::native::define_gas_parameters_for_natives!(GasParameters, "bitcoin_address", [
[.parse.base, "parse.base", 1000 * MUL],
[.parse.per_byte, "parse.per_byte", 30 * MUL],
[.verify_bitcoin_address_with_public_key.base, "verify_bitcoin_address_with_public_key.base", 1000 * MUL],
[.verify_bitcoin_address_with_public_key.per_byte, "verify_bitcoin_address_with_public_key.per_byte", 30 * MUL],
[.new.base, "parse.base", 1000 * MUL],
[.new.per_byte, "parse.per_byte", 30 * MUL],
[.derive_multi_sign_address.base, "parse.base", 1000 * MUL],
[.derive_multi_sign_address.per_byte, "parse.per_byte", 30 * MUL],
]);
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,16 @@ pub fn verify_bitcoin_address_with_public_key(
Ok(NativeResult::ok(cost, smallvec![Value::bool(is_ok)]))
}

// TODO: derive_multi_sign_address
pub fn derive_multi_sign_address(
gas_params: &FromBytesGasParameters,
_context: &mut NativeContext,
_ty_args: Vec<Type>,
mut args: VecDeque<Value>,
) -> PartialVMResult<NativeResult> {
todo!();
}

#[derive(Debug, Clone)]
pub struct FromBytesGasParameters {
pub base: InternalGas,
Expand All @@ -122,29 +132,38 @@ impl FromBytesGasParameters {

#[derive(Debug, Clone)]
pub struct GasParameters {
pub new: FromBytesGasParameters,
pub parse: FromBytesGasParameters,
pub verify_bitcoin_address_with_public_key: FromBytesGasParameters,
pub derive_multi_sign_address: FromBytesGasParameters,
}

impl GasParameters {
pub fn zeros() -> Self {
Self {
new: FromBytesGasParameters::zeros(),
parse: FromBytesGasParameters::zeros(),
verify_bitcoin_address_with_public_key: FromBytesGasParameters::zeros(),
derive_multi_sign_address: FromBytesGasParameters::zeros(),
}
}
}

pub fn make_all(gas_params: GasParameters) -> impl Iterator<Item = (String, NativeFunction)> {
let natives = [
("parse", make_native(gas_params.new, parse)),
("parse", make_native(gas_params.parse, parse)),
(
"verify_bitcoin_address_with_public_key",
make_native(
gas_params.verify_bitcoin_address_with_public_key,
verify_bitcoin_address_with_public_key,
),
),
(
"derive_multi_sign_address",
make_native(
gas_params.derive_multi_sign_address,
derive_multi_sign_address,
),
),
];

make_module_natives(natives)
Expand Down

0 comments on commit 5faade5

Please sign in to comment.