以下类型的智能契约是可能的吗?如果是的话,它被称为什么?
发布于 2020-06-26 03:52:48
如果我明白目标的话,诀窍就是找出一个秘密的交换方法。它必须脱离链,否则其他人都会看到它。
当一个人带着这个秘密到来时,他们可以获得一些东西。这里有一个简单的解决方案,处理许多秘密和奖励在飞行中。它可能会给你一些想法。
pragma solidity 0.6.6;
contract Secrets {
mapping(bytes32 => uint) public secrets;
function remit(bytes32 secret) public payable {
secrets[secret] += msg.value;
}
function claim(bytes32 magic) public {
bytes32 secret = keyGen(msg.sender, magic);
uint amount = secrets[secret];
require(amount > 0, "There is no money for you.");
secrets[secret] = 0;
msg.sender.transfer(amount);
}
function keyGen(address a, bytes32 magic) public pure returns(bytes32 secret) {
secret = keccak256(abi.encodePacked(a, magic));
}
}keyGen (离链,因为它是pure)创建密钥。非常简单的代码来说明这一点。还没准备好生产。;-)
希望能帮上忙。
发布于 2020-06-25 21:15:40
是:
pragma solidity 0.4.26;
contract MyContract {
address public partyB;
constructor(address _partyB) public payable {
partyB = _partyB;
}
function withdraw() public {
require(msg.sender == partyB);
msg.sender.transfer(address(this).balance);
}
}不过,我不太明白您的目标,因为PartyA可以直接将这些资金转移到PartyB。换句话说,为什么PartyA要为部署合同而烦恼,而PartyB为什么要为调用该契约上的函数而烦恼呢?
https://ethereum.stackexchange.com/questions/84541
复制相似问题