I hereby claim:
- I am cjentzsch on github.
- I am cjentzsch (https://keybase.io/cjentzsch) on keybase.
- I have a public key ASBju2bNM5AAfALJLOPuVTv14pdSJ3bZeC7aLLTaslHdzQo
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
000000000000000000000000b2cb826c945d8df01802b5cf3c4105685d4933a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000145354494654554e47204466696e69747920464443000000000000000000000000 |
000000000000000000000000b2cb826c945d8df01802b5cf3c4105685d4933a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000145354494654554e47204466696e69747920464443000000000000000000000000 |
/* | |
The MIT License (MIT) | |
Copyright (c) 2016 DFINITY Stiftung | |
Permission is hereby granted, free of charge, to any person obtaining a copy | |
of this software and associated documentation files (the "Software"), to deal | |
in the Software without restriction, including without limitation the rights | |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
copies of the Software, and to permit persons to whom the Software is |
# The Witness Algorithm: Privacy Protection in a Fully Transparent System | |
By **Vlad Gluhovsky** and **Gavin Wood** | |
# Introduction | |
Being based upon a quasi-Turing-complete (quasi because it's actually bounded) virtual machine, Ethereum is an extremely versatile system. However one of its greatest strengths---universal auditability---seems to lead to a fatal flaw, namely an inescapable lack of privacy. Here we demonstrate an algorithm in order to prove that this is not the case. | |
The algorithm could be used to make an Ethereum contract which, given two sets of addresses sources, `src`, and destinations, `dest`, will guarantee exactly one of two possible eventualities: | |
- For each address in `src`, the controller of that address controls a corresponding address in `dest` (though the two cannot be related *a priori*). |
var address = '0xbb9bc244d798123fde783fcc1c72d3bb8c189413'; | |
// define the dao-contract | |
var abi = [ | |
{name:"getNewDAOAddress", "type":"function","outputs":[ | |
{"type":"address","name":"_newDAO"}],"inputs":[ | |
{"type":"uint256","name":"_proposalID"}],"constant":true}, | |
{name:"numberOfProposals","type":"function","outputs":[ | |
{"type":"uint256","name":"_numberOfProposals"}],"inputs":[],"constant":true}, | |
{name : "extraBalance", "constant" : true, "inputs" : [], "type" : "function", |
[ | |
{ | |
"address":"0xd4fe7bc31cedb7bfb8a345f31e668033056b2728", | |
"extraBalanceAccount":"0xb3fb0e5aba0e20e5c49d252dfd30e102b171a425" | |
}, | |
{ | |
"address":"0x2c19c7f9ae8b751e37aeb2d93a699722395ae18f", | |
"extraBalanceAccount":"0xecd135fa4f61a655311e86238c92adcd779555d2" | |
}, | |
{ |
/* | |
This file is part of the DAO. | |
The DAO is free software: you can redistribute it and/or modify | |
it under the terms of the GNU lesser General Public License as published by | |
the Free Software Foundation, either version 3 of the License, or | |
(at your option) any later version. | |
The DAO is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
/* | |
This file is part of the DAO. | |
The DAO is free software: you can redistribute it and/or modify | |
it under the terms of the GNU lesser General Public License as published by | |
the Free Software Foundation, either version 3 of the License, or | |
(at your option) any later version. | |
The DAO is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
function withdraw(){ | |
uint balance = DAO(mother).balanceOf(msg.sender); | |
if (!DAO(mother).transferFrom(msg.sender, this, balance) || !msg.sender.send(balance * totalWeiSupply / totalSupply)) | |
throw; | |
} |