Created
August 3, 2020 08:13
-
-
Save MarcelKlammer/2e44e64a0f0a743ce7400c1b863ced93 to your computer and use it in GitHub Desktop.
0x_initialSetup_generateMnemonicWallet.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Add scripts to the PATH to be easily accessible. | |
export PATH="$PATH:/Applications/Daedalus Shelley Testnet v6.app/Contents/MacOS/" | |
CADDR=${CADDR:=$( which cardano-address )} | |
[[ -z "$CADDR" ]] && ( echo "cardano-address cannot be found, exiting..." >&2 ; exit 127 ) | |
CCLI=${CCLI:=$( which cardano-cli )} | |
[[ -z "$CCLI" ]] && ( echo "cardano-cli cannot be found, exiting..." >&2 ; exit 127 ) | |
TESTNET=0 | |
MAINNET=1 | |
NETWORK=$MAINNET | |
TESTNET_MAGIC="--testnet-magic 42" | |
MAINNET_MAGIC="--mainnet" | |
MAGIC="$MAINNET_MAGIC" | |
echo | |
which cardano-address | |
walletName="$1" # eg. wallet/name/name | |
if [ -f "${walletName}.phrase.txt" ]; then echo -e "\033[35mWARNING - ${walletName}.phrase.txt already present, delete it or use another name !\033[0m"; exit 2; fi | |
if [ -f "${walletName}.root.prv" ]; then echo -e "\033[35mWARNING - ${walletName}.root.prv already present, delete it or use another name !\033[0m"; exit 2; fi | |
if [ -f "${walletName}.payment.xprv" ]; then echo -e "\033[35mWARNING - ${walletName}.payment.xprv already present, delete it or use another name !\033[0m"; exit 2; fi | |
if [ -f "${walletName}.payment.xpub" ]; then echo -e "\033[35mWARNING - ${walletName}.payment.xpub already present, delete it or use another name !\033[0m"; exit 2; fi | |
if [ -f "${walletName}.staking.xprv" ]; then echo -e "\033[35mWARNING - ${walletName}.staking.xprv already present, delete it or use another name !\033[0m"; exit 2; fi | |
if [ -f "${walletName}.staking.xpub" ]; then echo -e "\033[35mWARNING - ${walletName}.staking.xpub already present, delete it or use another name !\033[0m"; exit 2; fi | |
if [ -f "${walletName}.staking.xpub" ]; then echo -e "\033[35mWARNING - ${walletName}.staking.xpub already present, delete it or use another name !\033[0m"; exit 2; fi | |
echo | |
echo "Generate Recovery Phrase: ${walletName}" | |
echo | |
cardano-address recovery-phrase generate --size 24 > ${walletName}.phrase.txt | |
echo | |
echo "Generate Root Key: ${walletName}" | |
cat ${walletName}.phrase.txt | cardano-address key from-recovery-phrase Shelley > ${walletName}.root.prv | |
echo | |
echo "Generate Private Keys: ${walletName}" | |
cat ${walletName}.root.prv | cardano-address key child 1852H/1815H/0H/0/0 > ${walletName}.payment.xprv | |
cat ${walletName}.payment.xprv | cardano-address key public > ${walletName}.payment.xpub | |
cat ${walletName}.root.prv | cardano-address key child 1852H/1815H/0H/2/0 > ${walletName}.staking.xprv | |
cat ${walletName}.staking.xprv | cardano-address key public > ${walletName}.staking.xpub | |
echo | |
echo "Generate Payment Address: ${walletName}" | |
cat ${walletName}.payment.xpub | cardano-address address payment --network-tag $NETWORK > ${walletName}.candidate.addr | |
echo | |
echo "Generate Staking Address: ${walletName}" | |
cat ${walletName}.candidate.addr | cardano-address address delegation $(cat ${walletName}.staking.xpub) > ${walletName}.payment.candidate.addr | |
echo | |
echo "$(cat ${walletName}.candidate.addr)" | |
echo "$(cat ${walletName}.payment.candidate.addr)" | |
echo | |
cat ${walletName}.payment.xprv | cardano-address key inspect | |
cat ${walletName}.payment.xpub | cardano-address key inspect | |
cat ${walletName}.staking.xprv | cardano-address key inspect | |
cat ${walletName}.staking.xpub | cardano-address key inspect | |
cat ${walletName}.candidate.addr | cardano-address address inspect | |
cat ${walletName}.payment.candidate.addr | cardano-address address inspect | |
# XPrv/XPub conversion to normal private and public key, keep in mind the | |
# keypars are not a valid Ed25519 signing keypairs. | |
TESTNET_MAGIC="--testnet-magic 42" | |
MAINNET_MAGIC="--mainnet" | |
MAGIC="$MAINNET_MAGIC" | |
SESKEY=$(cat ${walletName}.staking.xprv | bech32 | cut -b -128 )$(cat ${walletName}.staking.xpub | bech32) | |
PESKEY=$(cat ${walletName}.payment.xprv | bech32 | cut -b -128 )$(cat ${walletName}.payment.xpub | bech32) | |
cat << EOF > ${walletName}.staking.skey | |
{ | |
"type": "StakeExtendedSigningKeyShelley_ed25519_bip32", | |
"description": "", | |
"cborHex": "5880$SESKEY" | |
} | |
EOF | |
cat << EOF > ${walletName}.payment.skey | |
{ | |
"type": "PaymentExtendedSigningKeyShelley_ed25519_bip32", | |
"description": "Payment Signing Key", | |
"cborHex": "5880$PESKEY" | |
} | |
EOF | |
echo | |
echo "Checking whether cardano-address and cardano-cli outputs match after conversion." | |
"$CCLI" shelley key verification-key --signing-key-file ${walletName}.staking.skey --verification-key-file ${walletName}.staking.evkey | |
"$CCLI" shelley key verification-key --signing-key-file ${walletName}.payment.skey --verification-key-file ${walletName}.payment.evkey | |
"$CCLI" shelley key non-extended-key --extended-verification-key-file ${walletName}.staking.evkey --verification-key-file ${walletName}.staking.vkey | |
"$CCLI" shelley key non-extended-key --extended-verification-key-file ${walletName}.payment.evkey --verification-key-file ${walletName}.payment.vkey | |
"$CCLI" shelley stake-address build --stake-verification-key-file ${walletName}.staking.vkey $MAGIC > ${walletName}.staking.addr | |
"$CCLI" shelley address build --payment-verification-key-file ${walletName}.payment.vkey $MAGIC > ${walletName}.addr | |
"$CCLI" shelley address build \ | |
--payment-verification-key-file ${walletName}.payment.vkey \ | |
--stake-verification-key-file ${walletName}.staking.vkey \ | |
$MAGIC > ${walletName}.payment.addr | |
echo | |
echo "Important the base.addr and the base.addr_candidate must be the same" | |
diff ${walletName}.payment.addr ${walletName}.payment.candidate.addr | |
echo | |
echo | |
echo $(cat ${walletName}.candidate.addr) | |
echo $(cat ${walletName}.addr) | |
echo | |
echo | |
echo $(cat ${walletName}.payment.candidate.addr) | |
echo $(cat ${walletName}.payment.addr) | |
echo | |
if [[ "$(cat ${walletName}.payment.candidate.addr)" != "$(cat ${walletName}.payment.addr)" ]]; then | |
echo -e "\033[35mWARNING - ${walletName}.payment.candidate.addr doesn't match ${walletName}.payment.addr! Serious ERROR!!!!\033[0m"; exit 2; | |
fi | |
if [[ "$(cat ${walletName}.candidate.addr)" != "$(cat ${walletName}.addr)" ]]; then | |
echo -e "\033[35mWARNING - ${walletName}.candidate.addr doesn't match ${walletName}.addr! Serious ERROR!!!!\033[0m"; exit 2; | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment