Skip to content

Instantly share code, notes, and snippets.

@yidongw
Created December 20, 2018 23:39
Show Gist options
  • Save yidongw/3a082351a549104a02966a08017a0061 to your computer and use it in GitHub Desktop.
Save yidongw/3a082351a549104a02966a08017a0061 to your computer and use it in GitHub Desktop.
Perun14
function CheckSignature(address verifier, uint vid, address p1, uint cash1, uint subchan1, address Ingrid,
address p2, uint cash2, uint subchan2, uint validity, uint version, bytes sig) private view returns (bool) {
bytes32 msgHash = keccak256(vid, p1, cash1, subchan1, Ingrid, p2, cash2, subchan2, validity, version);
return libSignatures.verify(verifier, msgHash, sig);
}
function CheckVersion(address verifierA, address verifierB, uint vid, VirtualContract memory vc, uint version, bytes sigA, bytes sigB) private view returns (bool) {
if (!CheckSignature(verifierA, vid, vc.p1, vc.cash1, vc.subchan1, vc.Ingrid, vc.p2, vc.cash2, vc.subchan2, vc.validity, version, sigA))
return false;
bytes32 msgHash = keccak256(vid, vc.p1, vc.cash1, vc.subchan1, vc.Ingrid, vc.p2, vc.cash2, vc.subchan2, vc.validity, version, sigA);
return libSignatures.verify(verifierB, msgHash, sigB);
}
function CheckVC(uint vid, address p1, uint cash1, uint subchan1, address Ingrid,
address p2, uint cash2, uint subchan2, uint validity, bytes sig) private view {
require(id == subchan1 || id == subchan2);
require(Ingrid == alice.id || Ingrid == bob.id);
require(Other(Ingrid, alice.id, bob.id) == p1 || Other(Ingrid, alice.id, bob.id) == p2);
// require(alice.id == p1 && bob.id == p2 || alice.id == p2 && bob.id == p1)
// it could be that Ingrid == alice.id, bob.id == p1 but p2 == a random address
require(CheckSignature(Other(msg.sender, alice.id, bob.id), vid, p1, cash1, subchan1, Ingrid, p2, cash2, subchan2, validity, 0, sig));
}
function Other(address p, address p1, address p2) private pure returns (address) {
if (p == p1) return p2;
else return p1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment