diff --git a/scripts/ton_wallet_generator/README.md b/scripts/ton_wallet_generator/README.md new file mode 100644 index 000000000..4a03639ea --- /dev/null +++ b/scripts/ton_wallet_generator/README.md @@ -0,0 +1,19 @@ +# Generate TON wallet + +This is a typescript that generates a TON wallets and prints the mnemonic, secret and address to the console. +## Usage + +```bash +npm install + +npm run generate +``` +## Examples + +```bash +Mnemonic: unfair capable drastic increase bonus pledge ridge blue cube over fine daring frozen shrimp seat universe outside pen injury dumb enact artwork ship insane +Wallet Secret Key: 56cc895313f7abba1f2c6cd36d42e8737ced6138cba80f4381008a055ba9c30b135e61a6c3397e01ddf96af08d7a8f18eff8efcfc7a9ba5f7f05ce69f04a34ad +Public Key: 135e61a6c3397e01ddf96af08d7a8f18eff8efcfc7a9ba5f7f05ce69f04a34ad +Wallet v4 Address: EQDpKqfyCfFAmAtv7ihG2awG9psdAz1t-eFvi7gUJ13Z1GBY +Wallet v5 Address: EQByKwFuc1AFjCAWdGay-kLzoOmqsg0qaX44wU3FENX6PT2n +``` diff --git a/scripts/ton_wallet_generator/generate-wallet.ts b/scripts/ton_wallet_generator/generate-wallet.ts new file mode 100644 index 000000000..13afc5368 --- /dev/null +++ b/scripts/ton_wallet_generator/generate-wallet.ts @@ -0,0 +1,22 @@ +// generate-wallet.ts +import { mnemonicNew, mnemonicToWalletKey } from "@ton/crypto"; +import { WalletContractV4, WalletContractV5R1} from "@ton/ton"; + +async function main() { + const mnemonic = await mnemonicNew(); + console.log("Mnemonic:", mnemonic.join(" ")); + + const key = await mnemonicToWalletKey(mnemonic); + const walletv4 = WalletContractV4.create({ workchain: 0, publicKey: key.publicKey }); + const walletv5 = WalletContractV5R1.create({ workchain: 0, publicKey: key.publicKey }); + + console.log("Wallet Secret Key:", key.secretKey.toString("hex")); // Are we storing the hex in secrets manager? + console.log("Public Key:", key.publicKey.toString("hex")); // Ask security to share this + console.log("Wallet v4 Address:", walletv4.address.toString({ bounceable: true })); + console.log("Wallet v5 Address:", walletv5.address.toString({ bounceable: true })); +} + +main().catch((error) => { + console.error("Error:", error); + process.exit(1); +}); diff --git a/scripts/ton_wallet_generator/package.json b/scripts/ton_wallet_generator/package.json new file mode 100644 index 000000000..a21374201 --- /dev/null +++ b/scripts/ton_wallet_generator/package.json @@ -0,0 +1,17 @@ +{ + "name": "ton-wallet-generator", + "version": "1.0.0", + "description": "Generate TON wallet addresses", + "main": "generate-wallet.ts", + "scripts": { + "generate": "npx ts-node generate-wallet.ts" + }, + "dependencies": { + "@ton/crypto": "^3.3.0", + "@ton/ton": "^15.0.0" + }, + "devDependencies": { + "ts-node": "^10.9.2", + "typescript": "^5.3.3" + } +} diff --git a/scripts/ton_wallet_generator/tsconfig.json b/scripts/ton_wallet_generator/tsconfig.json new file mode 100644 index 000000000..4244e76bf --- /dev/null +++ b/scripts/ton_wallet_generator/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist", + "resolveJsonModule": true + }, + "include": ["*.ts"], + "exclude": ["node_modules"] +}