Skip to content

Instantly share code, notes, and snippets.

🦅
Fight for freedom

Jorge Izquierdo izqui

🦅
Fight for freedom
Block or report user

Report or block izqui

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View SafeMathLib.sol
library SafeMathLib {
function times(uint a, uint b) returns (uint) {
uint c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function minus(uint a, uint b) returns (uint) {
assert(b <= a);
return a - b;
View ethereum_ropsten.json
{
"username":"ji",
"address":"0xcc045ae84e5f3e12e150c418d7215a2b3863da20",
"proofString":"I am ji on Keybase verifying my Ethereum address 0xcc045ae84e5f3e12e150c418d7215a2b3863da20 by signing this proof with its private key",
"signature":"0x673ac837403b1fad2da56c7a4419afa6bd5c371b4903c7d848aad41e424e51a85f075e38f9a823a12d42312b1faf250c997babff2345bb6a1eab488ac84c79041b"
}
View gist:082e77c33b21ce691ce7f378b989d43c
contract KeybaseRegistryInterface {
// Lookup
function getAddress(string username) returns (address); // Lookup for an address given a username.
function getUsername(address ethAddress) returns (string username); // Reverse lookup of username for a given address
function myUsername() returns (string username); // Reverse lookup for sender
// Registering
function register(string username, address ethAddress) payable; // Starts registration for the provided address and username.
function registerSender(string username) payable; // Starts registration for tx sender for the provided username.
}
View livefactory.sol
contract LiveFactory {
function deployCode(bytes _code) returns (address deployedAddress) {
assembly {
deployedAddress := create(0, add(_code, 0x20), mload(_code))
jumpi(invalidJumpLabel, iszero(extcodesize(deployedAddress))) // jumps if no code at addresses
}
ContractDeployed(deployedAddress);
}
event ContractDeployed(address deployedAddress);
View thefactory.sol
contract TheContractFactory is LiveFactory {
function uploadCode(string identifier, bytes o_code)
onlyOrNone(deployer[identifierHash(identifier)])
returns (bytes32) {
bytes32 h = identifierHash(identifier);
code[h] = o_code;
deployer[h] = msg.sender;
View counterfact.sol
contract Counterfact is LiveFactory {
function addressForNonce(uint8 nonce) constant returns (address) {
if (nonce > 127) throw;
return address(sha3(0xd6, 0x94, address(this), nonce));
}
function Counterfact() payable {
firstDeployment = addressForNonce(uint8(1));
bool b = firstDeployment.send(msg.value);
}
View fixeable.sol
contract Fixeable is LiveFactory {
function executeCode(bytes _code) {
execute(deployCode(_code));
}
function execute(address fixer) {
if (!canExecuteArbitraryCode()) throw;
assembly {
calldatacopy(0x0, 0x0, calldatasize)
let a := delegatecall(sub(gas, 10000), fixer, 0x0, calldatasize, 0, 0)
View broken.sol
contract BrokenContract is Fixeable {
function BrokenContract() {
broken = true;
creator = msg.sender;
}
function canExecuteArbitraryCode() returns (bool) {
return broken && msg.sender == creator;
}
View gist:527649e48ba3b6a087470f09db267376
contract Fixer is BrokenContract {
function execute(address fixer) {
broken = false;
}
}
View fix_test.js
it('fixes', () => {
return BrokenContract.new()
.then(c => {
contract = c
return contract.broken()
})
.then(broken => {
assert.equal(broken, true)
return contract.executeCode(Fixer.binary)
})
You can’t perform that action at this time.