package Ġcom . fan r ong . fr wallet . ui . receipt . view m del čĊč Ċ import Ġandroidx . lifecycle . viewModel Scope č Ċ import Ġcom . fan r ong . fr wallet . dao . data . Gas Info Bean č Ċ import Ġcom . fan r ong . fr wallet . dao . database .* č Ċ import Ġcom . fan r ong . fr wallet . dao . event bus . Transfer Finish Event č Ċ import Ġcom . fan r ong . fr wallet . found . try Launch č Ċ import Ġcom . fan r ong . fr wallet . tools . ext Hex Wei 2 Ten 2 Ether Keep 4 č Ċ import Ġcom . fan r ong . fr wallet . wallet . eth . Eth Sign Utils č Ċ import Ġcom . fan r ong . fr wallet . wallet . eth . eth .* č Ċ import Ġorg . brew chain . core . crypto . cw v . util . Bytes Helper č Ċ import Ġorg . green robot . event bus . EventBus č Ċ import Ġxc . common . framework . mv vm . Operation Result č Ċ import Ġxc . common . tool . utils . SW Log č Ċ import Ġxc . common . tool . utils . check IsEmpty č Ċ import Ġxc . common . tool . utils . check NotEmpty č Ċ import Ġjava . math . BigDecimal čĊč Ċ class ĠETH Transfer View model Ġ: ĠTransfer View model () Ġ{ čĊčĊĠĠĠ Ġoverride Ġfun Ġget Gas Price () Ġ{ čĊĠĠĠĠĠĠĠ ĠviewModel Scope . try Launch Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgas Resp Ġ= Ġeth Api . sus Gas Price ( Gas Price Req ()). body () čĊĠĠĠĠĠĠĠĠĠĠĠ ĠSW Log . e ( gas Resp !!. result ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew And Post Value Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . gas Info Result Ġ= ĠOperation Result ( Gas Info Bean (" 0 x 5 2 0 8 ", Ġgas Resp . result !! ), Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġoverride Ġfun Ġget Balance ( coin : ĠCoin Dao ) Ġ{ čĊčĊĠĠĠĠĠĠĠ ĠviewModel Scope . try Launch Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( coin . contract _ addr . check NotEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbalance Result Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeth Api . sus Query Eth Token Balance ( Query Eth Token Balance Req ( coin . source Addr !! , Ġcoin . contract _ addr !! )). body () !! čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin . balance Ġ= Ġbalance Result . get Balance (). ext Hex Wei 2 Ten 2 Ether Keep 4 () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbalance Result Ġ= Ġeth Api . sus Query Eth Balance ( Query Eth Balance Req ( coin . source Addr !! )). body () !! čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin . balance Ġ= Ġbalance Result . get Balance (). ext Hex Wei 2 Ten 2 Ether Keep 4 () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew And Post Value Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbalance Result Ġ= ĠOperation Result ( coin , Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġoverride Ġfun Ġtransfer ( token Info : ĠCoin Dao , Ġto Addr : ĠString , Ġamount : ĠString , Ġgas : ĠG as Info Bean ?) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġpost Loading ( is Show Ġ= Ġtrue ) čĊč Ċ // ĠĠĠĠĠĠĠ ĠETH Chain Util čĊĠĠĠĠĠĠĠ Ġval Ġquery Wallet Ġ= ĠWallet Operator . query Wallet ( token Info ) čĊčĊĠĠĠĠĠĠĠ Ġvar Ġnonce Ġ= Ġ" 0 " čĊčĊĠĠĠĠĠĠĠ Ġfun Ġsend Transaction ( sign : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . try Launch Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġeth Api . sus Eth Transfer ( Eth Transfer Req ( sign )). body () !! čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Ġ= Ġresult . get Hash () čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hash . check IsEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ErrorMsg ( result . error ?. message Ġ?: Ġ" è½¬ è´¦ å¤±è´¥ ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ try Launch čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊč ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew And Post Value Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransfer Result Ġ= ĠOperation Result ( true , Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransfer Info Result Ġ= ĠOperation Result ( hash , Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Loading ( false ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal No ce Operator . save ( nonce , ĠWallet Operator . query Wallet ( token Info ), ĠChain Node Operator . query Current Node ( token Info . chain _ name !! )) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransfer Operator . save ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Info , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Addr , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnonce , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (). toString () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Transfer Finish Event ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ ĠviewModel Scope . try Launch Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġnonce Ġ= ĠTransfer Utils . get Real Nonce ( token Info , Ġeth Api . sus Get No ce ( Get No ce Req ( query Wallet . address )). body () !!. get No ce ()) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( token Info . contract _ addr . check IsEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE th Sign Utils . sign Eth Transfer ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 x " Ġ+ ĠBytes Helper . big Decimal 2 Hex Str ( BigDecimal ( amount ), Ġ 1 8 ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Wallet . address , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Wallet . privateKey !! , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Addr , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 x " Ġ+ ĠBytes Helper . big Decimal 2 Hex Str ( BigDecimal ( gas !!. gas Price ), Ġ 0 ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnonce čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSW Log . e ( it ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Transaction (" 0 x " Ġ+ Ġit ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE th Sign Utils . sign Eth Token Transfer ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 x " Ġ+ ĠBytes Helper . big Decimal 2 Hex Str ( BigDecimal ( amount ), Ġ 1 8 ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Wallet . address , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Wallet . privateKey !! , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Addr , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Info . contract _ addr !! , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 x " Ġ+ ĠBytes Helper . big Decimal 2 Hex Str ( BigDecimal ( gas !!. gas Price ), Ġ 0 ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnonce čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSW Log . e ( it ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Transaction (" 0 x " Ġ+ Ġit ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊč Ċ }