Skip to content

Instantly share code, notes, and snippets.

@Perseverance
Last active May 6, 2019 18:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Perseverance/8232dd87cd41bd8085860e03de83c7d2 to your computer and use it in GitHub Desktop.
Save Perseverance/8232dd87cd41bd8085860e03de83c7d2 to your computer and use it in GitHub Desktop.
// Shortened for brievety
// Message format keccak256 of packed `SellerAddress`,`BuyerAddress`,`ItemAddress`,`ConfirmedValue`
contract Bargain {
function transferItemWithEthers(address itemAddress, bytes _signedDataByOwner) public payable {
address itemOwner = Item(itemAddress).owner()
bytes32 bytes32Message = keccak256(abi.encodePacked(itemOwner, msg.sender, itemAddress, msg.value));
address recoveredSigner = recover(bytes32Message, _signedDataByOwner);
require(recoveredSigner == itemOwner, "Not signed by item Owner");
ItemsRegistry(registry).changeOwnership(itemOwner, msg.sender, itemAddress);
itemOwner.transfer(msg.value);
emit OwnershipTransferredWithEthers(itemOwner, msg.sender, itemAddress, msg.value);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment