Last active
April 3, 2019 07:48
-
-
Save lispc/d4fa2b6acb754f5da859894b3a4af823 to your computer and use it in GitHub Desktop.
multi sig demo for IOST
This file contains hidden or 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
set -eu | |
pubkey1=2ott3o9CZcaoZCe4nGYo1azEfEpY4W771GBFe133WW1p | |
seckey1=3MWryACc5nSxRDJCJLe9Xq2spR1j7d5wYbZ4pZN4SvfgUxhG497DQxo5ahENoCnDkLsc7haSveP1q1zkt26JWhog | |
pubkey2=G7Zy3ctcByrWfzCzkijnmPXm2rxjQruttFg9FH3hJSMw | |
seckey2=3NdYa9gCfsRpJMzQZWXfLhKegA4kpyKjYpDLxSCv3hnSX4homFS5T91guU6TGasmrU4Cei9WsNn3hA1cFHZnxKtm | |
pubkey3=D4WgA3Q9EV18S78haqYpdBqJZT3TNCgkraczi8PK4TVE | |
seckey3=4RQrGu6ZdKdNP21jQpbMjLMRGdhSemZf1xQXVsm6wJztmWXAm828qhmae6SoQjTU1H64box1Ha2cJgTDntj7Ud2 | |
pubkey4=HiE2gyeFeSoWzurFTWdFnNLizuigh93Jh97HisnQ2see | |
seckey4=3zXxqsvNTfcB3Ah9JCyX2mqYxRmMoGGu7i1jEnykkoc58ikGo6eoDXJTqpn8Yabt5mGkGd51atkzVafFyeTgwp6i | |
rm -f seckey* | |
echo -n $seckey2 > seckey2_ed25519 | |
echo -n $seckey3 > seckey3_ed25519 | |
echo -n $seckey4 > seckey4_ed25519 | |
chmod 0400 seckey* | |
TEST_USER_ID="myname" | |
GROUP="group" | |
function init_account() { | |
iwallet account import $TEST_USER_ID $seckey1 | |
iwallet --account admin account create $TEST_USER_ID --owner $pubkey1 --active $pubkey1 --initial_balance 20 --initial_ram 20000 --initial_gas_pledge 200 | |
iwallet --account $TEST_USER_ID call auth.iost addGroup [\"$TEST_USER_ID\",\"$GROUP\"] \ | |
auth.iost assignGroup \[\"$TEST_USER_ID\",\"$GROUP\",\"$pubkey2\",34\] \ | |
auth.iost assignGroup \[\"$TEST_USER_ID\",\"$GROUP\",\"$pubkey3\",34\] \ | |
auth.iost assignGroup \[\"$TEST_USER_ID\",\"$GROUP\",\"$pubkey4\",34\] \ | |
auth.iost assignPermissionToGroup [\"$TEST_USER_ID\",\"active\",\"$GROUP\"] \ | |
auth.iost assignPermissionToGroup [\"$TEST_USER_ID\",\"owner\",\"$GROUP\"] \ | |
auth.iost revokePermission [\"$TEST_USER_ID\",\"active\",\"$pubkey1\"] \ | |
auth.iost revokePermission [\"$TEST_USER_ID\",\"owner\",\"$pubkey1\"] | |
} | |
function test_singlesig_fail() { | |
iwallet --account $TEST_USER_ID call token.iost transfer [\"iost\",\"$TEST_USER_ID\",\"admin\",\"10\",\"\"] && (echo "should fail, but succeed"; exit 1) || echo "command failed as expected" | |
} | |
function test_multisig_usage1() { | |
iwallet --account $TEST_USER_ID call --sign_key_files seckey2_ed25519,seckey3_ed25519,seckey4_ed25519 --as_publisher_sign token.iost transfer [\"iost\",\"$TEST_USER_ID\",\"admin\",\"10\",\"\"] || (echo "should succeed, but fail"; exit 1) | |
} | |
function test_multisig_usage2() { | |
timeStr=`date +%Y-%m-%dT%H:%M:%S%z|sed 's#00$#:00#'` | |
actionStr="[\"iost\",\"$TEST_USER_ID\",\"admin\",\"10\",\"\"]" | |
txStr="--tx_time $timeStr token.iost transfer $actionStr" | |
txFile="tx.json" | |
iwallet call --output $txFile $txStr | |
iwallet sign --as_publisher_sign $txFile seckey2_ed25519 sig2 | |
iwallet sign --as_publisher_sign $txFile seckey3_ed25519 sig3 | |
iwallet sign --as_publisher_sign $txFile seckey4_ed25519 sig4 | |
iwallet --account $TEST_USER_ID send --signature_files sig2,sig3,sig4 --as_publisher_sign $txFile || (echo "should succeed, but fail"; exit 1) | |
} | |
init_account | |
test_multisig_usage1 | |
test_multisig_usage2 | |
test_singlesig_fail | |
echo "multisig test succeed!" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment