mirror of
https://github.com/arnaucube/miksi-core.git
synced 2026-02-07 11:36:47 +01:00
Add very initial version of smart contracts with tests
This commit is contained in:
52
contracts/Miksi.sol
Normal file
52
contracts/Miksi.sol
Normal file
@@ -0,0 +1,52 @@
|
||||
pragma solidity ^0.6.0;
|
||||
|
||||
import './verifier.sol';
|
||||
|
||||
contract Miksi {
|
||||
Verifier verifier;
|
||||
|
||||
constructor( address _verifierContractAddr) public {
|
||||
verifier = Verifier(_verifierContractAddr);
|
||||
}
|
||||
|
||||
mapping(uint256 => Deposit) deposits;
|
||||
|
||||
struct Deposit {
|
||||
uint256 coinCode;
|
||||
uint256 amount;
|
||||
}
|
||||
|
||||
function deposit(
|
||||
uint256 coinCode,
|
||||
uint256 amount,
|
||||
uint256 commitment
|
||||
) public {
|
||||
deposits[commitment] = Deposit(coinCode, amount);
|
||||
}
|
||||
|
||||
function getDeposit(
|
||||
uint256 commitment
|
||||
) public view returns (uint256, uint256) {
|
||||
return (
|
||||
deposits[commitment].coinCode,
|
||||
deposits[commitment].amount
|
||||
);
|
||||
}
|
||||
|
||||
function withdraw(
|
||||
uint256 commitment,
|
||||
uint[2] memory a,
|
||||
uint[2][2] memory b,
|
||||
uint[2] memory c
|
||||
) public {
|
||||
|
||||
uint256[3] memory input = [
|
||||
deposits[commitment].coinCode,
|
||||
deposits[commitment].amount,
|
||||
commitment
|
||||
];
|
||||
require(verifier.verifyProof(a, b, c, input), "zkProof withdraw could not be verified");
|
||||
|
||||
// zk verification passed, proceed with the withdraw
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user