Rename NetworkId to HashParameter

This commit is contained in:
Martin Ondejka 2023-06-28 16:43:23 +02:00
parent 0e84fb487d
commit 758f77be3e
3 changed files with 29 additions and 29 deletions

View file

@ -2,22 +2,22 @@ package vm
// Solidity interfaces for precompiles
//
// enum NetworkId {
// enum HashParameter {
// MAINNET,
// TESTNET,
// NULLNET
// EMPTY
// }
//
// interface IHasher {
// function poseidonHash(
// NetworkId networkId,
// HashParameter hashParameter,
// bytes32[] memory fields
// ) external view returns (bytes32);
// }
//
// interface ISigner {
// function verify(
// NetworkId networkId,
// HashParameter hashParameter,
// bytes32 pubKeyX,
// bytes32 pubKeyY,
// bytes32 signatureRX,
@ -79,7 +79,7 @@ func (c *MinaPoseidon) Run(input []byte) ([]byte, error) {
calldata := input[4:]
unpacked, err := (abi.Arguments{{
Type: sol_uint8}, // networkId
Type: sol_uint8}, // hashParameter
{Type: sol_bytes32Arr}, // fields
}).Unpack(calldata)
@ -87,7 +87,7 @@ func (c *MinaPoseidon) Run(input []byte) ([]byte, error) {
return packErr("Unable to unpack calldata"), err
}
networkId := unpacked[0].(uint8)
hashParameter := unpacked[0].(uint8)
fields := unpacked[1].([][32]uint8)
output_buffer := [32]byte{}
@ -100,7 +100,7 @@ func (c *MinaPoseidon) Run(input []byte) ([]byte, error) {
}
if !C.poseidon(
C.uint8_t(networkId),
C.uint8_t(hashParameter),
fields_ptr,
C.uintptr_t(len(fields)),
(*C.uint8_t)(&output_buffer[0]),
@ -128,7 +128,7 @@ func (c *MinaSigner) Run(input []byte) ([]byte, error) {
calldata := input[4:]
unpacked, err := (abi.Arguments{
{Type: sol_uint8}, // networkId
{Type: sol_uint8}, // hashParameter
{Type: sol_bytes32}, // pubKeyX
{Type: sol_bytes32}, // pubKeyY
{Type: sol_bytes32}, // signatureRX
@ -140,7 +140,7 @@ func (c *MinaSigner) Run(input []byte) ([]byte, error) {
return packErr("Unable to unpack calldata"), err
}
networkId := unpacked[0].(uint8)
hashParameter := unpacked[0].(uint8)
pubKeyX := unpacked[1].([32]uint8)
pubKeyY := unpacked[2].([32]uint8)
signatureRX := unpacked[3].([32]uint8)
@ -157,7 +157,7 @@ func (c *MinaSigner) Run(input []byte) ([]byte, error) {
}
if !C.verify(
C.uint8_t(networkId),
C.uint8_t(hashParameter),
(*C.uint8_t)(&pubKeyX[0]),
(*C.uint8_t)(&pubKeyY[0]),
(*C.uint8_t)(&signatureRX[0]),

View file

@ -2,7 +2,7 @@ mod mina;
use std::array::TryFromSliceError;
use mina::{Message, NetworkId};
use mina::{HashParameter, Message};
use mina_signer::{BaseField, CurvePoint, PubKey, ScalarField, Signature};
use o1_utils::FieldHelpers;
@ -24,9 +24,9 @@ pub unsafe extern "C" fn poseidon(
}
let network_id = match network_id {
0x00 => NetworkId::Mainnet,
0x01 => NetworkId::Testnet,
0x02 => NetworkId::Nullnet,
0x00 => HashParameter::Mainnet,
0x01 => HashParameter::Testnet,
0x02 => HashParameter::Empty,
_ => return false,
};
@ -81,9 +81,9 @@ pub unsafe extern "C" fn verify(
}
let network_id = match network_id {
0x00 => NetworkId::Mainnet,
0x01 => NetworkId::Testnet,
0x02 => NetworkId::Nullnet,
0x00 => HashParameter::Mainnet,
0x01 => HashParameter::Testnet,
0x02 => HashParameter::Empty,
_ => return false,
};

View file

@ -4,19 +4,19 @@ use o1_utils::{field_helpers::FieldHelpersError, FieldHelpers};
#[derive(Debug, Clone)]
#[repr(C)]
pub enum NetworkId {
pub enum HashParameter {
Mainnet = 0x00,
Testnet = 0x01,
Nullnet = 0x02,
Empty = 0x02,
}
impl From<NetworkId> for u8 {
fn from(id: NetworkId) -> u8 {
impl From<HashParameter> for u8 {
fn from(id: HashParameter) -> u8 {
id as u8
}
}
impl DomainParameter for NetworkId {
impl DomainParameter for HashParameter {
fn into_bytes(self) -> Vec<u8> {
vec![self as u8]
}
@ -39,7 +39,7 @@ impl Message {
}
impl Hashable for Message {
type D = NetworkId;
type D = HashParameter;
fn to_roinput(&self) -> ROInput {
self.fields
@ -47,16 +47,16 @@ impl Hashable for Message {
.fold(ROInput::new(), |roi, field| roi.append_field(*field))
}
fn domain_string(network_id: NetworkId) -> Option<String> {
fn domain_string(network_id: HashParameter) -> Option<String> {
match network_id {
NetworkId::Mainnet => "MinaSignatureMainnet".to_string().into(),
NetworkId::Testnet => "CodaSignature".to_string().into(),
NetworkId::Nullnet => None,
HashParameter::Mainnet => "MinaSignatureMainnet".to_string().into(),
HashParameter::Testnet => "CodaSignature".to_string().into(),
HashParameter::Empty => None,
}
}
}
pub fn poseidon(msg: &Message, network_id: NetworkId) -> BaseField {
pub fn poseidon(msg: &Message, network_id: HashParameter) -> BaseField {
let mut hasher = mina_hasher::create_kimchi::<Message>(network_id);
hasher.hash(msg)
@ -66,7 +66,7 @@ pub fn verify(
signature: &Signature,
pubkey: &PubKey,
msg: &Message,
network_id: NetworkId,
network_id: HashParameter,
) -> bool {
let mut signer = mina_signer::create_kimchi::<Message>(network_id);