diff --git a/benches/create_n_users.bench.ts b/benches/create_n_users.bench.ts new file mode 100644 index 00000000..76e033be --- /dev/null +++ b/benches/create_n_users.bench.ts @@ -0,0 +1,79 @@ +import { Connection, Keypair } from '@solana/web3.js'; +import * as fs from 'fs'; +import * as splToken from "@solana/spl-token"; +import * as os from 'os'; + +// number of users +const nbUsers = process.argv[2]; +// url +const url = process.argv.length > 3 ? process.argv[3] : "http://127.0.0.1:8890"; +// outfile +const outFile = process.argv.length > 4 ? process.argv[4] : "out.json"; + +console.log("creating " + nbUsers + " Users on " + url + " out file " + outFile); + +(async () => { + const connection = new Connection(url, 'confirmed'); + + const authority = Keypair.fromSecretKey( + Uint8Array.from( + JSON.parse( + process.env.KEYPAIR || + fs.readFileSync(os.homedir() + '/.config/solana/id.json', 'utf-8'), + ), + ), + ); + + // create n key pairs + const userKps = [...Array(nbUsers)].map(_x => Keypair.generate()) + + // create and initialize new mint + const mint = await splToken.createMint( + connection, + authority, + authority.publicKey, + null, + 6, + ); + + // create accounts for each key pair created earlier + const accounts = await Promise.all(userKps.map(x => { + return splToken.createAccount( + connection, + authority, + mint, + x.publicKey, + ) + })); + + // mint to accounts + await Promise.all(accounts.map(to => { + return splToken.mintTo( + connection, + authority, + mint, + to, + authority, + 1_000_000_000_000, + ) + })); + + const users = userKps.map(user => { + return { + publicKey: user.publicKey.toBase58(), + secretKey: Array.from(user.secretKey) + } + }); + + const data = { + 'users': users, + 'tokenAccounts': accounts, + 'mint': mint, + 'minted_amount': 1_000_000_000_000 + }; + + console.log('created ' + nbUsers + ' Users and minted 10^12 tokens for mint ' + mint); + + fs.writeFileSync(outFile, JSON.stringify(data)); + +})() diff --git a/package.json b/package.json index 83071186..e5138ca9 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "repository": "https://github.com/blockworks-foundation/lite-rpc.git", "license": "MIT", "devDependencies": { + "@solana/spl-token": "^0.3.6", "@solana/web3.js": "^1.73.0", "@types/jest": "^29.2.5", "jest": "^29.3.1", diff --git a/src/cli.rs b/src/cli.rs index 62e80568..0f3e5b39 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -8,9 +8,9 @@ pub struct Args { pub rpc_addr: String, #[arg(short, long, default_value_t = String::from(DEFAULT_WS_ADDR))] pub ws_addr: String, - #[arg(short, long, default_value_t = String::from("127.0.0.1:8890"))] + #[arg(long, default_value_t = String::from("127.0.0.1:8890"))] pub lite_rpc_http_addr: String, - #[arg(short, long, default_value_t = String::from("127.0.0.1:8891"))] + #[arg(short='s', long, default_value_t = String::from("127.0.0.1:8891"))] pub lite_rpc_ws_addr: String, #[arg(short, long, default_value_t = false)] pub batch_transactions: bool, diff --git a/yarn.lock b/yarn.lock index 142aab43..ff0eb4c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -587,6 +587,16 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@solana/buffer-layout-utils@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" + integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/web3.js" "^1.32.0" + bigint-buffer "^1.1.5" + bignumber.js "^9.0.1" + "@solana/buffer-layout@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" @@ -594,7 +604,16 @@ dependencies: buffer "~6.0.3" -"@solana/web3.js@^1.73.0": +"@solana/spl-token@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.6.tgz#35473ad2ed71fe91e5754a2ac72901e1b8b26a42" + integrity sha512-P9pTXjDIRvVbjr3J0mCnSamYqLnICeds7IoH1/Ro2R9OBuOHdp5pqKZoscfZ3UYrgnCWUc1bc9M2m/YPHjw+1g== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + buffer "^6.0.3" + +"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.73.0": version "1.73.0" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.73.0.tgz#c65f9f954ac80fca6952765c931dd72e57e1b572" integrity sha512-YrgX3Py7ylh8NYkbanoINUPCj//bWUjYZ5/WPy9nQ9SK3Cl7QWCR+NmbDjmC/fTspZGR+VO9LTQslM++jr5PRw== @@ -876,6 +895,11 @@ bigint-buffer@^1.1.5: dependencies: bindings "^1.3.0" +bignumber.js@^9.0.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" + integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== + bindings@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -956,7 +980,7 @@ buffer@6.0.1: base64-js "^1.3.1" ieee754 "^1.2.1" -buffer@~6.0.3: +buffer@^6.0.3, buffer@~6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==