/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 - present , ĠDash ĠCore ĠGroup Ċ Ġ* Ċ Ġ* ĠThis Ġsource Ġcode Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense Ġfound Ġin Ġthe Ċ Ġ* ĠLICENSE Ġfile Ġin Ġthe Ġroot Ġdirectory Ġof Ġthis Ġsource Ġtree . Ċ Ġ*/ Ċ package Ġorg . dash j . platform . examples Ċ Ċ import Ġjava . io . File Ċ import Ġjava . security . Secure Random Ċ import Ġjava . util . Date Ċ import Ġjava . util . Scanner Ċ import Ġorg . bitcoin j . core . Address Ċ import Ġorg . bitcoin j . params . Test Net 3 Params Ċ import Ġorg . bitcoin j . utils . Brief Log Formatter Ċ import Ġorg . bitcoin j . wallet . Determin istic Key Chain Ċ import Ġorg . bitcoin j . wallet . Determin istic Seed Ċ import Ġorg . bitcoin j . wallet . Key Chain Ċ import Ġorg . dash j . platform . sdk . Client Ċ import Ġorg . dash j . platform . sdk . client . Client Options Ċ Ċ class ĠCreate Wallet sWith Balance Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġsdk : ĠClient ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPARAM S Ġ= ĠTest Net 3 Params . get () ĊĠĠĠĠĠĠĠ Ġvar Ġconfiguration File : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġnetwork : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġbalance : ĠDouble Ġ= Ġ 1 . 0 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġfirst Ġargument Ġmust Ġbe Ġthe Ġlocation Ġof Ġthe Ġconfiguration Ġfile Ġthat Ġmust Ġinclude ĊĠĠĠĠĠĠĠĠ Ġ* Ġrpc user , Ġrpc user password Ġand Ġserver = 1 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB rief Log Formatter . initWith Sil ent Bitcoin J () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( args . size Ġ>= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġargs [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration File Ġ= Ġargs [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbalance Ġ= Ġargs [ 2 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsdk Ġ= ĠClient ( Client Options ( network Ġ= Ġargs [ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ------------------------------------------------ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Create Wallet s ($ network : Ġ$ configuration File )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Wallet s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Create Wallet sWith Balance . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" The Ġfirst Ġargument Ġis Ġthe Ġnetwork Ġand Ġthe Ġsecond Ġmust Ġbe Ġthe Ġpath Ġto Ġthe Ġ. conf Ġfile Ġfor Ġthe Ġdev net \ ndash - cli Ġmust Ġbe Ġin Ġyour Ġpath ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" The Ġthird Ġargument Ġis Ġthe Ġbalance Ġwith Ġwhich Ġto Ġload Ġeach Ġwallet ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrun Rpc ( command : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= Ġ" dash - cli Ġ- conf =$ configuration File Ġ$ command " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcommand . run Command ( File (". ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate Wallet s () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscanner Ġ= ĠScanner ( System .` in `) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecure Random Ġ= ĠSecure Random () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecovery Phrase Map Ġ= ĠHashMap < String , ĠString >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Enter Ġthe Ġnumber Ġof Ġwallet s Ġto Ġcreate :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Ġ= Ġscanner . nextInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Wallet , ĠRecovery ĠP hr ase , ĠFirst ĠAddress ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtotal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġentropy Ġ= ĠByteArray ( 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecure Random . next Bytes ( entropy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentropy Ġ= Ġentropy . copyOf Range ( 0 , ĠDetermin istic Seed . DEFAULT _ SEED _ ENT RO PY _ BITS Ġ/ Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchain Ġ= ĠDetermin istic Key Chain . builder (). entropy ( entropy , ĠDate (). time Ġ/ Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. account Path ( Determin istic Key Chain . B IP 4 4 _ ACCOUNT _ ZERO _ PATH _ TEST NET ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Key Ġ= Ġchain . getKey ( Key Chain . Key Purpose . RECEIVE _ FUN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= ĠAddress . from Key ( PARAMS , Ġreceive Key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecovery Phrase Ġ= Ġchain . seed !!. mn emonic Code !!. join ToString (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecovery Phrase Map [ recovery Phrase ] Ġ= Ġaddress . to Base 5 8 () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" processing Ġ${ i Ġ+ Ġ 1 } Ġ$ recovery Phrase , Ġ$ address " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfund Ġthe Ġwallet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx id Ġ= Ġrun Rpc (" send to address Ġ$ address Ġ$ balance ") !!. trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tx id . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" send to address Ġfailed : ĠIs Ġthe Ġ$ network Ġdaemon Ġrunning ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Wallet Ġfunding Ġtransaction : Ġ$ tx id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġtx Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Bytes Ġ= Ġrun Rpc (" ge tr aw transaction Ġ$ tx id ") !!. trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( tx Bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprint Ġusername s Ġand Ġassociated Ġrecovery Ġphrases ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("\ n Recovery ĠP hr ase , ĠFirst ĠAddress ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( phrase Ġin Ġrecovery Phrase Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ phrase . key }, Ġ${ phrase . value }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ