Selbstzerstörungstransaktion

wie man eine Transaktion wie DIESE TRANSAKTION durchführt

jeder kann mir helfen, wie man es baut

Fragen Sie, wie Sie die selfdestruct()Funktion von solidity verwenden?
Ja, können Sie mir das Remix-Ethereum-Skript von diesem sagen? und wie benutzt man es?

Antworten (2)

Der Klarheit halber können Sie kein Skript erstellen, das herumläuft und andere Verträge auslöscht. Sie können Dinge so organisieren, dass die von Ihnen erstellten Verträge bereit sind, selfdestructwenn Sie es ihnen sagen.

Hier stellt ein FactoryVertrag eine Reihe von 10 Verträgen bereit, die ausgeführt werden selfdestruct, wenn der Factory(und nur der Factory) es ihnen sagt. Es gibt ausführliche Protokolle von beiden Vertragsarten.

pragma solidity 0.4.25;

contract Factory {

    address[] public volatileContracts;
    event LogCreatedVolatileContract(address sender, address volatileContract);
    event LogKilledVolatileContract(address sender, address volatileContract);

    /**
     * If this were a real implementation, you would want access control over these functions.
     */

    function createVolatileContracts() public returns(bool success) {
        require(volatileContracts.length==0, "Ten at a time, please.");
        for(uint i=0; i<10; i++) {
            Volatile v = new Volatile();
            volatileContracts.push(address(v));
            emit LogCreatedVolatileContract(msg.sender, address(v));
        }
        return true;
    }

    function destroyVolatileContracts() public returns(bool success) {
        for(uint i=0; i<10; i++) {
            emit LogKilledVolatileContract(msg.sender, volatileContracts[i]);
            Volatile v = Volatile(volatileContracts[i]);
            v.kill();
        }
        volatileContracts.length=0;
        return true;
    }

}

contract Volatile {

    address public owner;

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    event LogSelfDestruction(address sender, address this, address owner, uint balance);

    constructor() public {
        owner = msg.sender;
    }

    function kill() public onlyOwner {
        emit LogSelfDestruction(msg.sender, address(this), owner, address(this).balance);
        selfdestruct(owner);
    }
}

Es ist nur ein Gekritzel, um Ihnen einige Ideen zu geben. Es gibt mehrere nicht triviale Bedenken, die Sie ansprechen sollten, bevor Sie über die Verwendung nachdenken. Keine Garantie.

Ich hoffe es hilft.

Sie können den folgenden Code versuchen:

pragma solidity ^0.4.22;

contract exampleContract {

    event Debug(bool destroyed); // Create an event to let web3 know that contract is destroyed

    constructor () public {

    // I've set this function internal which means you can only call this function from another function.
    // You can set it to public but I'd recommend you to create a modifier for owner and use it instead.
    function _destroyContract() internal {
        emit Debug(true); // call event
        // this - is the current contract address
        selfdestruct(this); // selfDestruct contract
    }
}

Hoffe das hilft jemandem!