Last active
May 6, 2019 18:50
-
-
Save Perseverance/8232dd87cd41bd8085860e03de83c7d2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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