Skip to content

Commit

Permalink
fix: update pint (#46)
Browse files Browse the repository at this point in the history
  • Loading branch information
freesig authored Jul 4, 2024
1 parent 9c747bd commit d498dc6
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 37 deletions.
3 changes: 2 additions & 1 deletion apps/nft/front_end/src/inputs/nft/transfer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ impl DecVars {
let Self { auth_addr } = self;
let mut decision_variables = vec![];

auth_addr.write_dec_var(&mut decision_variables);
auth_addr.address.write_dec_var(&mut decision_variables);
Int::from(auth_addr.path).write_dec_var(&mut decision_variables);

decision_variables
}
Expand Down
8 changes: 4 additions & 4 deletions apps/nft/pint/nft/src/contract.pnt
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ predicate Transfer {
constraint @safe_increment(nonce);

constraint __mut_keys_len() == 2;
@auth(key; A; auth_addr; TRANSFER);
@auth(key; A; auth_addr; @transfer());
}

predicate Cancel {
Expand All @@ -72,9 +72,9 @@ predicate Cancel {
constraint __mut_keys_len() == 1;

// Check the authorization predicate.
@auth(key; A; auth_addr; CANCEL);
@auth(key; A; auth_addr; @cancel());
}


const TRANSFER = { contract: signed::ADDRESS, addr: signed::Transfer::ADDRESS };
const CANCEL = { contract: signed::ADDRESS, addr: signed::Cancel::ADDRESS };
macro @transfer() { { contract: signed::ADDRESS, addr: signed::Transfer::ADDRESS } }
macro @cancel() { { contract: signed::ADDRESS, addr: signed::Cancel::ADDRESS } }
3 changes: 2 additions & 1 deletion apps/token/app/src/inputs/token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ impl DecVars {
let Self { auth_addr } = self;
let mut decision_variables = vec![];

auth_addr.write_dec_var(&mut decision_variables);
auth_addr.address.write_dec_var(&mut decision_variables);
Int::from(auth_addr.path).write_dec_var(&mut decision_variables);

decision_variables
}
Expand Down
3 changes: 2 additions & 1 deletion apps/token/app/src/inputs/token/mint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ impl DecVars {

name.write_dec_var(&mut decision_variables);
symbol.write_dec_var(&mut decision_variables);
auth_addr.write_dec_var(&mut decision_variables);
auth_addr.address.write_dec_var(&mut decision_variables);
Int::from(auth_addr.path).write_dec_var(&mut decision_variables);

decision_variables
}
Expand Down
21 changes: 16 additions & 5 deletions apps/token/pint/token/src/auth.pnt
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
const TRANSFER = { contract: signed::ADDRESS, addr: signed::Transfer::ADDRESS };
const TRANSFER_WITH = { contract: signed::ADDRESS, addr: signed::TransferWith::ADDRESS };
macro @transfer() {
{ contract: signed::ADDRESS, addr: signed::Transfer::ADDRESS }
}

const BURN = { contract: signed::ADDRESS, addr: signed::Burn::ADDRESS };
macro @transfer_with() {
{ contract: signed::ADDRESS, addr: signed::TransferWith::ADDRESS }
}

const MINT = { contract: signed::ADDRESS, addr: signed::Mint::ADDRESS };
macro @burn() {
{ contract: signed::ADDRESS, addr: signed::Burn::ADDRESS }
}

const CANCEL = { contract: signed::ADDRESS, addr: signed::Cancel::ADDRESS };
macro @mint() {
{ contract: signed::ADDRESS, addr: signed::Mint::ADDRESS }
}

macro @cancel() {
{ contract: signed::ADDRESS, addr: signed::Cancel::ADDRESS }
}
8 changes: 4 additions & 4 deletions apps/token/pint/token/src/contract.pnt
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ predicate Burn {

// Check the authorization predicate.
var auth_addr: PredicateAddress;
@auth(auth_addr; key; auth::BURN);
@auth(auth_addr; key; auth::@burn());
}

predicate Mint {
Expand Down Expand Up @@ -101,7 +101,7 @@ predicate Mint {

// Check the authorization predicate.
var auth_addr: PredicateAddress;
@auth(auth_addr; key; auth::MINT);
@auth(auth_addr; key; auth::@mint());
}

predicate Transfer {
Expand Down Expand Up @@ -140,7 +140,7 @@ predicate Transfer {

// Check the authorization predicate.
var auth_addr: PredicateAddress;
@auth(auth_addr; key; auth::TRANSFER; auth::TRANSFER_WITH);
@auth(auth_addr; key; auth::@transfer(); auth::@transfer_with());
}

predicate Cancel {
Expand All @@ -158,7 +158,7 @@ predicate Cancel {

// Check the authorization predicate.
var auth_addr: PredicateAddress;
@auth(auth_addr; key; auth::CANCEL);
@auth(auth_addr; key; auth::@cancel());
}

macro @auth($auth_addr, $key, $allowed_addr, &rest) {
Expand Down
21 changes: 11 additions & 10 deletions apps/utils/src/inputs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,24 +97,23 @@ impl WriteDecVars for Int {
impl WriteDecVars for essential_signer::secp256k1::ecdsa::RecoverableSignature {
fn write_dec_var(&self, decision_variables: &mut Vec<Value>) {
let sig = essential_sign::encode::signature(self);
decision_variables.to_slot(sig[..4].to_vec());
decision_variables.to_slot(sig[4..8].to_vec());
decision_variables.to_slot(sig[8..].to_vec());
decision_variables.to_slot(sig);
}
}

impl WriteDecVars for essential_signer::secp256k1::PublicKey {
fn write_dec_var(&self, decision_variables: &mut Vec<Value>) {
let k = essential_sign::encode::public_key(self);
decision_variables.to_slot(k[..4].to_vec());
decision_variables.to_slot(k[4..].to_vec());
decision_variables.to_slot(k);
}
}

impl WriteDecVars for PredicateAddress {
fn write_dec_var(&self, decision_variables: &mut Vec<Value>) {
self.contract.write_dec_var(decision_variables);
self.predicate.write_dec_var(decision_variables);
let mut slot = Vec::new();
self.contract.write_dec_var(&mut slot);
self.predicate.write_dec_var(&mut slot);
decision_variables.to_slot(slot.into_iter().flatten());
}
}

Expand All @@ -126,9 +125,11 @@ impl WriteDecVars for ContentAddress {

impl WriteDecVars for Instance {
fn write_dec_var(&self, decision_variables: &mut Vec<Value>) {
self.address.contract.write_dec_var(decision_variables);
self.address.predicate.write_dec_var(decision_variables);
Int::from(self.path).write_dec_var(decision_variables);
let mut slot = Vec::new();
self.address.contract.write_dec_var(&mut slot);
self.address.predicate.write_dec_var(&mut slot);
Int::from(self.path).write_dec_var(&mut slot);
decision_variables.to_slot(slot.into_iter().flatten());
}
}

Expand Down
22 changes: 11 additions & 11 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit d498dc6

Please sign in to comment.