En el Genesis cargamos 8 cuentas con 7237005577332262213973186563042994240829374041602535252466.099000494570602495 (7*10^57) ether cada una.
Las cuentas son:
0xbfa02a9639318f5ed1291e2cee387aa9f9d68f98
0xbfa1c42c7381a4ad32e13ce3263b639a0e0488f2
0xbfa2c97c3f59cc929e8feb1aee2aca0b38235d18
0xbfa3eb31f6526a5b29ae2302508bb6b1400d1fd1
0xbfa846ddd1fb18af693f24d316c12d8e88f4b79f
0xbfa8b1acfb51da0975274c6ebd46704c6c670a07
0xbfab583022c5c18fec70965d63985b86f96c5657
0xbfae9512c1cf4d9ce549333725c02ee8b3e5f049
Vamos a hacer una ceremonia de cuentas para hacer cuentas para BFA donde transferir todo este ether fuera del control del Gran Danes.
Hay que eligir N partes del BFA (N >= 6). Cada uno va a tener un parte de la llave para abrir una cuenta.
Para poder usar una cuenta, hay que usar la ayuda de M partes. Ese numero se llama M (y obviamente M <= N).
Todo el ether se distribuye asi:
- M=2: 1024 cuentas con 1 Mega (10^6) eth (10^24 wei).
- M=2: 1024 cuentas con 1 Giga (10^9) eth (10^27 wei).
- M=3: 1024 cuentas con 1 Tera (10^12) eth (10^30 wei).
- M=4: 9 cuentas con 10^57 eth (10^75 wei)
- M=4: 1 cuenta con "el resto" (menos 1 MEth para operaciones)
- M=4: 18 cuentas extra (vacias)
3100 cuentas en total. Cada cuenta tiene una clave distinta. Vamos a usar 768 bits (binario) claves en base 64 (1024 caracteres):
#!/bin/bash
dir=bfavault
function genacct
{
shares=$1
threshold=$2
mkdir new || exit 1
dd if=/dev/urandom bs=1 count=768 2>/dev/null| base64 | xargs -n 1 echo -n > newpassword
geth --datadir $dir/new --password newpassword account new
file=$( echo new/* )
account=${file#.*--}
ssss-split -t $threshold -n $shares -w $account -q < newpassword > accounts/${account}.shares
rm -f newpassword
mv -f $file accounts
rmdir new || exit 1
}
function dist
{
threshold=$1
for i in $( seq 1 $threshold ); do mkdir accounts/share.$i
for file in accounts/*
do
account=${file#.*--}
i=$( wc -l accounts/${account}.shares )
while [ $i -gt 0 ]
do
from=accounts/${account}.shares
to=accounts/share.${i}/${account}.passshare
grep -- -${i}- $from > $to
test $( wc -l $to ) -eq 1
# Each share holder gets a copy of the protected key file
cp -p ${file} accounts/share.${i}/
let i--
done
rm ${file} $from
done
}
trap "echo Argh;exit 1" ERR
set -o errtrace
swapoff -a
cd $dir
mkdir accounts
i=1024
while [ $i -gt 0 ]
do
genacct 2 5
let i--
done
dist 5
echo A copiar a USB cada una de las carpetas account.share.*