Add very initial version of smart contracts with tests

This commit is contained in:
arnaucube
2020-05-09 19:01:41 +02:00
parent 7f7ba4f7cb
commit e0dfc2ab6c
16 changed files with 537 additions and 27 deletions

52
contracts/Miksi.sol Normal file
View 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
}
}