यह अनुबंध घोटाला कैसे काम करता है?

Aug 17 2020

इस अजीब अनुबंध को ध्यान में रखते हुए कोई व्यक्ति निर्माण करता है, किसी प्रकार के घोटाले की तरह दिखता है, यह कैसे काम करता है?

https://etherscan.io/address/0x4fa738cf30036505d106b22f60e64bf52e64aa77/advanced#code:

/**
 *Submitted for verification at Etherscan.io on 2020-08-16
*/

contract a1_quiz
{
    function Try(string _response) external payable 
    {
        require(msg.sender == tx.origin);

        if(responseHash == keccak256(_response) && msg.value > 1 ether)
        {
            msg.sender.transfer(this.balance);
        }
    }

    string public question;

    bytes32 responseHash;

    mapping (bytes32=>bool) admin;

    function Start(string _question, string _response) public payable isAdmin{
        if(responseHash==0x0){
            responseHash = keccak256(_response);
            question = _question;
        }
    }

    function Stop() public payable isAdmin {
        msg.sender.transfer(this.balance);
    }

    function New(string _question, bytes32 _responseHash) public payable isAdmin {
        question = _question;
        responseHash = _responseHash;
    }

    constructor(bytes32[] admins) public{
        for(uint256 i=0; i< admins.length; i++){
            admin[admins[i]] = true;        
        }       
    }

    modifier isAdmin(){
        require(admin[keccak256(msg.sender)]);
        _;
    }

    function() public payable{}
}

जवाब

2 Ismael Aug 18 2020 at 03:42

यदि आप केवल अनुबंध नियमित लेन-देन इतिहास पढ़ते हैं, तो आप मानेंगे कि निर्माण के बाद इसे Start(string _question, string _response)लेन-देन 0xc96ddea6...ब्लॉक 10668934 पर कॉल करके आरंभ किया गया था

  • _question = "वकील किस तरह के कपड़े पहनते हैं?"
  • _response = "LawsuiT"

लेकिन अगर आप आंतरिक लेन-देन देखने वहाँ करने के लिए पिछले एक फोन था function New(string _question, bytes32 _responseHash)लेनदेन में 0xbed05f75 ... ब्लॉक 10,668,933 पर।

कॉल करने के लिए Startबदल दिया नहीं responseHashके रूप में शिकार अपेक्षा की होगी, इसलिए करने के लिए कॉल Tryविफल हो जाएगा।

नोट: इन "शहद के बर्तनों" के साथ मत खेलो, यह हारना बहुत आसान है और संभावना नहीं कि आप जीत जाएंगे।