Cleanup
This commit is contained in:
		
							parent
							
								
									dd81e04445
								
							
						
					
					
						commit
						b324ed7b34
					
				| @ -1,69 +0,0 @@ | ||||
| import { Secp256k1Wallet, StdSignDoc } from '@cosmjs/amino' | ||||
| import { fromHex } from '@cosmjs/encoding' | ||||
| import { DirectSecp256k1Wallet, makeSignBytes } from '@cosmjs/proto-signing' | ||||
| // @ts-expect-error
 | ||||
| import { SignDoc } from '@cosmjs/proto-signing/build/codec/cosmos/tx/v1beta1/tx' | ||||
| import MnemonicKeyring from 'mnemonic-keyring' | ||||
| 
 | ||||
| /** | ||||
|  * Constants | ||||
|  */ | ||||
| const DEFAULT_PATH = "m/44'/118'/0'/0/0" | ||||
| 
 | ||||
| /** | ||||
|  * Types | ||||
|  */ | ||||
| interface IInitArguments { | ||||
|   mnemonic?: string | ||||
|   path?: string | ||||
|   prefix?: string | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Utility | ||||
|  */ | ||||
| export class EIP155 { | ||||
|   private keyring: MnemonicKeyring | ||||
|   private directSigner: DirectSecp256k1Wallet | ||||
|   private aminoSigner: Secp256k1Wallet | ||||
| 
 | ||||
|   constructor( | ||||
|     keyring: MnemonicKeyring, | ||||
|     directSigner: DirectSecp256k1Wallet, | ||||
|     aminoSigner: Secp256k1Wallet | ||||
|   ) { | ||||
|     this.directSigner = directSigner | ||||
|     this.keyring = keyring | ||||
|     this.aminoSigner = aminoSigner | ||||
|   } | ||||
| 
 | ||||
|   static async init({ mnemonic, path, prefix }: IInitArguments) { | ||||
|     const keyring = await MnemonicKeyring.init({ mnemonic }) | ||||
|     const privateKey = fromHex(keyring.getPrivateKey(path ?? DEFAULT_PATH)) | ||||
|     const chainPrefix = prefix ?? 'cosmos' | ||||
|     const directSigner = await DirectSecp256k1Wallet.fromKey(privateKey, chainPrefix) | ||||
|     const aminoSigner = await Secp256k1Wallet.fromKey(privateKey, chainPrefix) | ||||
| 
 | ||||
|     return new EIP155(keyring, directSigner, aminoSigner) | ||||
|   } | ||||
| 
 | ||||
|   public async getAccount(number = 0) { | ||||
|     const account = await this.directSigner.getAccounts() | ||||
| 
 | ||||
|     return account[number] | ||||
|   } | ||||
| 
 | ||||
|   public getMnemonic() { | ||||
|     return this.keyring.mnemonic | ||||
|   } | ||||
| 
 | ||||
|   public async signDirect(address: string, signDoc: SignDoc) { | ||||
|     const signDocBytes = makeSignBytes(signDoc) | ||||
|     // @ts-expect-error
 | ||||
|     return await this.directSigner.signDirect(address, signDocBytes) | ||||
|   } | ||||
| 
 | ||||
|   public async signAmino(address: string, signDoc: StdSignDoc) { | ||||
|     return await this.aminoSigner.signAmino(address, signDoc) | ||||
|   } | ||||
| } | ||||
| @ -2,17 +2,27 @@ import { Keypair, PublicKey, Transaction, TransactionInstructionCtorFields } fro | ||||
| import bs58 from 'bs58' | ||||
| import nacl from 'tweetnacl' | ||||
| 
 | ||||
| export class Solana { | ||||
| /** | ||||
|  * Types | ||||
|  */ | ||||
| interface IInitArguments { | ||||
|   secretKey?: Uint8Array | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Library | ||||
|  */ | ||||
| export default class SolanaLib { | ||||
|   keypair: Keypair | ||||
| 
 | ||||
|   constructor(keypair: Keypair) { | ||||
|     this.keypair = keypair | ||||
|   } | ||||
| 
 | ||||
|   static init(secretKey?: Uint8Array) { | ||||
|   static init({ secretKey }: IInitArguments) { | ||||
|     const keypair = secretKey ? Keypair.fromSecretKey(secretKey) : Keypair.generate() | ||||
| 
 | ||||
|     return new Solana(keypair) | ||||
|     return new SolanaLib(keypair) | ||||
|   } | ||||
| 
 | ||||
|   public async getAccount() { | ||||
| @ -1,8 +1,8 @@ | ||||
| import { Solana } from '@/lib/Solana' | ||||
| import SolanaLib from '@/lib/SolanaLib' | ||||
| 
 | ||||
| export let wallet1: Solana | ||||
| export let wallet2: Solana | ||||
| export let solanaWallets: Record<string, Solana> | ||||
| export let wallet1: SolanaLib | ||||
| export let wallet2: SolanaLib | ||||
| export let solanaWallets: Record<string, SolanaLib> | ||||
| export let solanaAddresses: string[] | ||||
| 
 | ||||
| let address1: string | ||||
| @ -19,13 +19,13 @@ export async function createOrRestoreSolanaWallet() { | ||||
|     const secretArray1: number[] = Object.values(JSON.parse(secretKey1)) | ||||
|     const secretArray2: number[] = Object.values(JSON.parse(secretKey2)) | ||||
| 
 | ||||
|     wallet1 = Solana.init(Uint8Array.from(secretArray1)) | ||||
|     wallet2 = Solana.init(Uint8Array.from(secretArray2)) | ||||
|     wallet1 = SolanaLib.init({ secretKey: Uint8Array.from(secretArray1) }) | ||||
|     wallet2 = SolanaLib.init({ secretKey: Uint8Array.from(secretArray2) }) | ||||
|     address1 = await wallet1.getAccount() | ||||
|     address2 = await wallet2.getAccount() | ||||
|   } else { | ||||
|     wallet1 = Solana.init() | ||||
|     wallet2 = Solana.init() | ||||
|     wallet1 = SolanaLib.init({}) | ||||
|     wallet2 = SolanaLib.init({}) | ||||
|     address1 = await wallet1.getAccount() | ||||
|     address2 = await wallet2.getAccount() | ||||
|     // Don't store secretKey in local storage in a production project!
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user