Skip to content

Instantly share code, notes, and snippets.

@prajwolrg
Created March 21, 2023 16:26
Show Gist options
  • Save prajwolrg/d41320bd69bc14fa10e9f8f54a670e41 to your computer and use it in GitHub Desktop.
Save prajwolrg/d41320bd69bc14fa10e9f8f54a670e41 to your computer and use it in GitHub Desktop.
// The 'credits' program.
program my_credits.aleo {
record credits {
owner: address,
gates: u64
}
transition mint(receiver: address, amount: u64) -> credits {
return credits {
owner: receiver,
gates: amount
};
}
transition transfer(sender: credits, receiver: address, amount: u64) -> (credits, credits) {
let difference: u64 = sender.gates - amount;
let transferred: credits = credits {
owner: receiver,
gates: amount
};
let remaining: credits = credits {
owner: sender.owner,
gates: difference
};
return (transferred, remaining);
}
transition join(first: credits, second: credits) -> credits {
return credits {
owner: first.owner,
gates: first.gates + second.gates
};
}
transition split(sender: credits, amount: u64) -> (credits, credits) {
let difference: u64 = sender.gates - amount;
let transferred: credits = credits {
owner: sender.owner,
gates: amount
};
let remaining: credits = credits {
owner: sender.owner,
gates: difference
};
return (transferred, remaining);
}
transition fee(sender: credits, amount: u64) -> credits {
let difference: u64 = sender.gates - amount;
let remaining: credits = credits {
owner: sender.owner,
gates: difference
};
return remaining;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment