浏览代码

add destroy function, allowing send funds to recepient

Maxim Averin 8 年之前
父节点
当前提交
4de772f5ed
共有 3 个文件被更改,包括 20 次插入2 次删除
  1. 5 0
      contracts/lifecycle/Destructible.sol
  2. 6 1
      docs/source/killable.rst
  3. 9 1
      test/Destructible.js

+ 5 - 0
contracts/lifecycle/Destructible.sol

@@ -7,9 +7,14 @@ import "../ownership/Ownable.sol";
 /*
  * Destructible
  * Base contract that can be destroyed by owner. All funds in contract will be sent to the owner.
+ * In second function all funds will be sent to the recepient.
  */
 contract Destructible is Ownable {
   function destroy() onlyOwner {
     selfdestruct(owner);
   }
+
+  function destroyAndSendRecepient(address _recipient) onlyOwner {
+    selfdestruct(_recipient);
+  }
 }

+ 6 - 1
docs/source/killable.rst

@@ -8,4 +8,9 @@ Inherits from contract Ownable.
 destroy( ) onlyOwner
 """""""""""""""""""
 
-Destroys the contract and sends funds back to the owner.
+Destroys the contract and sends funds back to the owner.
+
+destroyAndSendRecepient(address _recipient) onlyOwner
+"""""""""""""""""""
+
+Destroys the contract and sends funds back to the _recepient.

+ 9 - 1
test/Destructible.js

@@ -11,8 +11,16 @@ contract('Destructible', function(accounts) {
     let initBalance = web3.eth.getBalance(owner);
     await destructible.destroy({from: owner});
     let newBalance = web3.eth.getBalance(owner);
-
     assert.isTrue(newBalance > initBalance);
   });
 
+  it('should send balance to recepient after destruction', async function() {
+    let destructible = await Destructible.new({from: accounts[0], value: web3.toWei('10','ether')});
+    let owner = await destructible.owner();
+    let initBalance = web3.eth.getBalance(accounts[1]);
+    await destructible.destroyAndSendRecepient(accounts[1], {from: owner} );
+    let newBalance = web3.eth.getBalance(accounts[1]);
+    assert.isTrue(newBalance.greaterThan(initBalance));
+  });
+
 });