diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 2d60ecce8..e7aa445f9 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -186,7 +186,7 @@ jobs: SECONDS=0 while ((SECONDS <= 300)) do - if curl -f -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"bank_supplyOf","params":["sov16m8fxq0x5wc5aw75fx9rus2p7g2l22zf4re72c3m058g77cdjemsavg2ft"],"id":1}' http://127.0.0.1:12345 | grep -q 1000; then + if curl -f -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"bank_supplyOf","params":["sov1zdwj8thgev2u3yyrrlekmvtsz4av4tp3m7dm5mx5peejnesga27svq9m72"],"id":1}' http://127.0.0.1:12345 | grep -q 1000; then echo "demo-rollup test succeeded" exit 0 fi diff --git a/examples/demo-rollup/Makefile b/examples/demo-rollup/Makefile index b44d83d28..a49036df0 100644 --- a/examples/demo-rollup/Makefile +++ b/examples/demo-rollup/Makefile @@ -97,16 +97,16 @@ test-generate-create-token-tx: check-container-running build-sov-cli $(SOV_CLI_REL_PATH) transactions import from-file bank --path ../test-data/requests/create_token.json set-rpc-url: build-sov-cli - $(SOV_CLI_REL_PATH) rpc set-url http://localhost:12345 + $(SOV_CLI_REL_PATH) rpc set-url http://127.0.0.1:12345 import-keys: build-sov-cli - $(SOV_CLI_REL_PATH) keys import --nickname DANGER__DO_NOT_USE_WITH_REAL_MONEY --path ../test-data/keys/minter_private_key.json + $(SOV_CLI_REL_PATH) keys import --nickname DANGER__DO_NOT_USE_WITH_REAL_MONEY --path ../test-data/keys/token_deployer_private_key.json test-create-token: set-rpc-url test-generate-create-token-tx import-keys - $(SOV_CLI_REL_PATH) rpc submit-batch + $(SOV_CLI_REL_PATH) rpc submit-batch by-nickname DANGER__DO_NOT_USE_WITH_REAL_MONEY remove-insecure-keys: build-sov-cli - $(SOV_CLI_REL_PATH) keys remove by-address sov15vspj48hpttzyvxu8kzq5klhvaczcpyxn6z6k0hwpwtzs4a6wkvqwr57gc + $(SOV_CLI_REL_PATH) keys remove by-address sov1l6n2cku82yfqld30lanm2nfw43n2auc8clw7r5u5m6s7p8jrm4zqrr8r94 clean-rollup-db: $(eval path := ./$(shell awk -F'=' '/^path/ {print $$2}' rollup_config.toml | tr -d '[:space:]"\n')) diff --git a/examples/demo-rollup/README.md b/examples/demo-rollup/README.md index fefd3120b..76a7cb0fd 100644 --- a/examples/demo-rollup/README.md +++ b/examples/demo-rollup/README.md @@ -225,7 +225,7 @@ Here's an example of a JSON representing the above call: "to": "sov1zgfpyysjzgfpyysjzgfpyysjzgfpyysjzgfpyysjzgfpyysjzgfqve8h6h", "coins": { "amount": 200, - "token_address": "sov16m8fxq0x5wc5aw75fx9rus2p7g2l22zf4re72c3m058g77cdjemsavg2ft" + "token_address": "sov1zdwj8thgev2u3yyrrlekmvtsz4av4tp3m7dm5mx5peejnesga27svq9m72" } } } @@ -271,7 +271,7 @@ Adding the following transaction to batch: "to": "sov1l6n2cku82yfqld30lanm2nfw43n2auc8clw7r5u5m6s7p8jrm4zqrr8r94", "coins": { "amount": 200, - "token_address": "sov16m8fxq0x5wc5aw75fx9rus2p7g2l22zf4re72c3m058g77cdjemsavg2ft" + "token_address": "sov1zdwj8thgev2u3yyrrlekmvtsz4av4tp3m7dm5mx5peejnesga27svq9m72" } } } @@ -286,7 +286,7 @@ You now have a batch with a single transaction in your wallet. If you want to su batch, you can import them now. Finally, let's submit your transaction to the rollup. ```bash -$ ./target/debug/sov-cli rpc submit-batch by-address sov15vspj48hpttzyvxu8kzq5klhvaczcpyxn6z6k0hwpwtzs4a6wkvqwr57gc +$ ./target/debug/sov-cli rpc submit-batch by-address sov1l6n2cku82yfqld30lanm2nfw43n2auc8clw7r5u5m6s7p8jrm4zqrr8r94 ``` This command will use your default private key @@ -294,7 +294,7 @@ This command will use your default private key #### 4. Verify the Token Supply ```bash -$ curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"bank_supplyOf","params":["sov16m8fxq0x5wc5aw75fx9rus2p7g2l22zf4re72c3m058g77cdjemsavg2ft"],"id":1}' http://127.0.0.1:12345 +$ curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"bank_supplyOf","params":["sov1zdwj8thgev2u3yyrrlekmvtsz4av4tp3m7dm5mx5peejnesga27svq9m72"],"id":1}' http://127.0.0.1:12345 {"jsonrpc":"2.0","result":{"amount":1000},"id":1} ``` diff --git a/examples/demo-rollup/src/lib.rs b/examples/demo-rollup/src/lib.rs index 87c2b2652..e7e64c0dc 100644 --- a/examples/demo-rollup/src/lib.rs +++ b/examples/demo-rollup/src/lib.rs @@ -14,7 +14,7 @@ pub use rollup::{ new_rollup_with_celestia_da, new_rollup_with_mock_da, new_rollup_with_mock_da_from_config, Rollup, }; -use sov_cli::wallet_state::{HexPrivateAndAddress, PrivateKeyAndAddress}; +use sov_cli::wallet_state::PrivateKeyAndAddress; use sov_db::ledger_db::LedgerDB; use sov_modules_api::default_context::DefaultContext; use sov_rollup_interface::da::{BlobReaderTrait, DaSpec}; @@ -41,13 +41,10 @@ pub fn initialize_ledger(path: impl AsRef) -> LedgerDB { pub fn get_genesis_config( sequencer_da_address: <::BlobTransaction as BlobReaderTrait>::Address, ) -> GenesisConfig { - let hex_key: HexPrivateAndAddress = serde_json::from_slice(include_bytes!( - "../../test-data/keys/token_deployer_private_key.json" - )) - .expect("Broken key data file"); - let key_and_address: PrivateKeyAndAddress = hex_key - .try_into() - .expect("Failed to parse sequencer private key and address"); + let data = std::fs::read_to_string("../test-data/keys/token_deployer_private_key.json") + .expect("Unable to read file to string"); + let key_and_address: PrivateKeyAndAddress = serde_json::from_str(&data) + .unwrap_or_else(|_| panic!("Unable to convert data {} to PrivateKeyAndAddress", &data)); assert!( key_and_address.is_matching_to_default(), "Inconsistent key data" diff --git a/examples/demo-rollup/src/rollup.rs b/examples/demo-rollup/src/rollup.rs index 3a8cab0d8..c3f9b5d74 100644 --- a/examples/demo-rollup/src/rollup.rs +++ b/examples/demo-rollup/src/rollup.rs @@ -11,6 +11,8 @@ use demo_stf::app::DefaultPrivateKey; use demo_stf::app::{App, DefaultContext}; use demo_stf::runtime::{get_rpc_methods, GenesisConfig}; use risc0_adapter::host::Risc0Verifier; +#[cfg(feature = "experimental")] +use sov_cli::wallet_state::PrivateKeyAndAddress; use sov_db::ledger_db::LedgerDB; #[cfg(feature = "experimental")] use sov_ethereum::experimental::EthRpcConfig; @@ -129,14 +131,10 @@ pub fn new_rollup_with_mock_da_from_config( pub fn read_tx_signer_priv_key() -> Result { let data = std::fs::read_to_string(TX_SIGNER_PRIV_KEY_PATH).context("Unable to read file")?; - let hex_key: crate::HexPrivateAndAddress = - serde_json::from_str(&data).context("JSON does not have correct format.")?; - - let priv_key = sov_modules_api::default_signature::private_key::DefaultPrivateKey::from_hex( - &hex_key.hex_priv_key, - )?; + let key_and_address: PrivateKeyAndAddress = serde_json::from_str(&data) + .unwrap_or_else(|_| panic!("Unable to convert data {} to PrivateKeyAndAddress", &data)); - Ok(priv_key) + Ok(key_and_address.private_key) } impl + Clone> Rollup { diff --git a/examples/test-data/keys/token_deployer_private_key.json b/examples/test-data/keys/token_deployer_private_key.json index 0305b1862..a51524bbb 100644 --- a/examples/test-data/keys/token_deployer_private_key.json +++ b/examples/test-data/keys/token_deployer_private_key.json @@ -1,4 +1,6 @@ { - "hex_priv_key": "75fbf8d98746c2692e502942b938c82379fd09ea9f5b60d4d39e87e1b42468fdf8ad2437a279e1c8932c07358c91dc4fe34864a98c6c25f298e2a0199c1509ff", + "private_key": { + "key_pair": [117, 251, 248, 217, 135, 70, 194, 105, 46, 80, 41, 66, 185, 56, 200, 35, 121, 253, 9, 234, 159, 91, 96, 212, 211, 158, 135, 225, 180, 36, 104, 253] + }, "address": "sov1l6n2cku82yfqld30lanm2nfw43n2auc8clw7r5u5m6s7p8jrm4zqrr8r94" } \ No newline at end of file diff --git a/examples/test-data/keys/tx_signer_private_key.json b/examples/test-data/keys/tx_signer_private_key.json index b237947bc..fd53a900a 100644 --- a/examples/test-data/keys/tx_signer_private_key.json +++ b/examples/test-data/keys/tx_signer_private_key.json @@ -1,4 +1,6 @@ { - "hex_priv_key": "27c3774d52e71ea266a9c5256cd98b9ae67e62f2ae5ed34a668db8eaa83e1bac61fcf0f466bc20ca3882d46ae07d65227e31cfaefb852bc8f579415247565dd4", + "private_key": { + "key_pair": [39, 195, 119, 77, 82, 231, 30, 162, 102, 169, 197, 37, 108, 217, 139, 154, 230, 126, 98, 242, 174, 94, 211, 74, 102, 141, 184, 234, 168, 62, 27, 172] + }, "address": "sov1dnhqk4mdsj2kwv4xymt8a624xuahfx8906j9usdkx7ensfghndkq8p33f7" } \ No newline at end of file diff --git a/examples/test-data/requests/mint.json b/examples/test-data/requests/mint.json index 10436e602..aeb6e9236 100644 --- a/examples/test-data/requests/mint.json +++ b/examples/test-data/requests/mint.json @@ -2,7 +2,7 @@ "Mint": { "coins": { "amount": 3000, - "token_address": "sov16m8fxq0x5wc5aw75fx9rus2p7g2l22zf4re72c3m058g77cdjemsavg2ft" + "token_address": "sov1zdwj8thgev2u3yyrrlekmvtsz4av4tp3m7dm5mx5peejnesga27svq9m72" }, "minter_address": "sov15vspj48hpttzyvxu8kzq5klhvaczcpyxn6z6k0hwpwtzs4a6wkvqwr57gc" } diff --git a/examples/test-data/requests/transfer.json b/examples/test-data/requests/transfer.json index 92411d14c..dac1d8638 100644 --- a/examples/test-data/requests/transfer.json +++ b/examples/test-data/requests/transfer.json @@ -3,7 +3,7 @@ "to": "sov1l6n2cku82yfqld30lanm2nfw43n2auc8clw7r5u5m6s7p8jrm4zqklh0qh", "coins": { "amount": 200, - "token_address": "sov16m8fxq0x5wc5aw75fx9rus2p7g2l22zf4re72c3m058g77cdjemsavg2ft" + "token_address": "sov1zdwj8thgev2u3yyrrlekmvtsz4av4tp3m7dm5mx5peejnesga27svq9m72" } } } diff --git a/module-system/module-implementations/sov-bank/src/lib.rs b/module-system/module-implementations/sov-bank/src/lib.rs index 6d81a201d..63baea6d7 100644 --- a/module-system/module-implementations/sov-bank/src/lib.rs +++ b/module-system/module-implementations/sov-bank/src/lib.rs @@ -5,7 +5,8 @@ mod genesis; #[cfg(feature = "native")] pub mod query; mod token; -mod utils; +/// Util functions for bank +pub mod utils; /// Specifies the call methods using in that module. pub use call::CallMessage; diff --git a/module-system/sov-cli/src/workflows/keys.rs b/module-system/sov-cli/src/workflows/keys.rs index cc5b67629..801f55503 100644 --- a/module-system/sov-cli/src/workflows/keys.rs +++ b/module-system/sov-cli/src/workflows/keys.rs @@ -123,15 +123,16 @@ pub fn generate_and_save_key( wallet_state: &mut WalletState, ) -> Result<(), anyhow::Error> { let keys = ::PrivateKey::generate(); - let public_key = keys.pub_key(); - let address = keys.pub_key().to_address::<::Address>(); + let key_and_address = PrivateKeyAndAddress::::from_key(keys); + let public_key = key_and_address.private_key.pub_key(); + let address = key_and_address.address.clone(); let key_path = app_dir.as_ref().join(format!("{}.json", address)); println!( "Generated key pair with address: {}. Saving to {}", address, key_path.display() ); - std::fs::write(&key_path, serde_json::to_string(&keys)?)?; + std::fs::write(&key_path, serde_json::to_string(&key_and_address)?)?; wallet_state .addresses .add(address, nickname, public_key, key_path);