From 39e49f170035b6f890eeb185c1a8881c7fb5c98c Mon Sep 17 00:00:00 2001 From: Cory Schwartz Date: Tue, 20 Apr 2021 21:55:47 -0700 Subject: [PATCH 1/2] implement WalletBalance on gateway --- api/api_gateway.go | 1 + api/proxy_gen.go | 10 ++++++++++ build/openrpc/full.json.gz | Bin 22486 -> 22482 bytes build/openrpc/miner.json.gz | Bin 7847 -> 7847 bytes build/openrpc/worker.json.gz | Bin 2577 -> 2579 bytes cmd/lotus-gateway/api.go | 5 +++++ 6 files changed, 16 insertions(+) diff --git a/api/api_gateway.go b/api/api_gateway.go index 187fad86fc0..08b3e0681ff 100644 --- a/api/api_gateway.go +++ b/api/api_gateway.go @@ -43,4 +43,5 @@ type Gateway interface { StateVerifiedClientStatus(ctx context.Context, addr address.Address, tsk types.TipSetKey) (*abi.StoragePower, error) StateSearchMsg(ctx context.Context, from types.TipSetKey, msg cid.Cid, limit abi.ChainEpoch, allowReplaced bool) (*MsgLookup, error) StateWaitMsg(ctx context.Context, cid cid.Cid, confidence uint64, limit abi.ChainEpoch, allowReplaced bool) (*MsgLookup, error) + WalletBalance(context.Context, address.Address) (types.BigInt, error) } diff --git a/api/proxy_gen.go b/api/proxy_gen.go index 402da34c0ea..bfaaade94cd 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -516,6 +516,8 @@ type GatewayStruct struct { StateVerifiedClientStatus func(p0 context.Context, p1 address.Address, p2 types.TipSetKey) (*abi.StoragePower, error) `` StateWaitMsg func(p0 context.Context, p1 cid.Cid, p2 uint64, p3 abi.ChainEpoch, p4 bool) (*MsgLookup, error) `` + + WalletBalance func(p0 context.Context, p1 address.Address) (types.BigInt, error) `` } } @@ -2601,6 +2603,14 @@ func (s *GatewayStub) StateWaitMsg(p0 context.Context, p1 cid.Cid, p2 uint64, p3 return nil, xerrors.New("method not supported") } +func (s *GatewayStruct) WalletBalance(p0 context.Context, p1 address.Address) (types.BigInt, error) { + return s.Internal.WalletBalance(p0, p1) +} + +func (s *GatewayStub) WalletBalance(p0 context.Context, p1 address.Address) (types.BigInt, error) { + return *new(types.BigInt), xerrors.New("method not supported") +} + func (s *SignableStruct) Sign(p0 context.Context, p1 SignFunc) error { return s.Internal.Sign(p0, p1) } diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index 0e258fe6408f879d7dec01298b2524ef89e6f03b..83e319db5fa6dd8bb13f67159b5ecf44d0a9403d 100644 GIT binary patch delta 20599 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%0AE5_L5aQd?vMitGmy1z4t1wTT&;dlI0$k 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 delta 20645 zcmV)&K#afAuL0Jt0kFve0oSw20tEqo^!xm#;Xc0yu`h{Vx9gnro_m{9-a)qh0N96U z9`7(az?>_dv@CKC>Io0QlUJa8%h%jBf2`NMeBf$1l|mC6PURz^5cPI@!}X2Lt?gdF zcR{=>P@{i6J35UR8&+~J{ocC(JUO~)^LOtXp$9CcqPP3DKd*DfQYrpMqNcuo1aQjE zh3TiCo#IHIoZ`=KKt^NH+wHCQ`n?b4hhh+u7Uu#BIActG$TIdb0sIj-$0Ilc4@fBZ z^1vIwON6+8a=tejMKHnwB-9Ia9-CNFx%(5~0#8ECysGnbPDZxfk60v|QyeIsRD#gU zwvRa+0jMo&$@$KH#?NA!_4l@a;F%MaxqQ6;?hyeK{xfIap5@O?-#oxkgs19ra>w8y zEPn|#wU~5P1<&T5vvX9fXu>t2C&+fBZL zEOY_zEnVp@Ur|H_50g`Bw`#MPB;ziA-j%GnWH~x#b7_j4NjG#}05E@lNY!+IDs<;1 zeRgp>9-Fpjd)q=fO!41BQepzdLRu`eZzU<_2C!L2oR1yqlYjs!Y7x#F%l%?Ao_@iUpNZL6$DZe#R73QflHc>sI}36 z{5T90!to`R`h_DLaE3yE#yJ@Tpp@Wc@JKK;#@BF3eKJ&q43r7^kY0m zIq@L^|B}j?!!3BRJV0s%KVQ7tMHe5A&(X(s7au+!qVo@*znmO@qR*dB{*CtEp)cp} z4$;x)GxYx5#l`Wb_vquh^Ygv;@6OTjC$xvoPv0FJ9~~c{{gclJze$LPpV6n!7qVXg z?8RpZA>aGp&Tg z;ILEI6EY!|Z2Ei5Pa~L+xWgnrDs!vdIG-e{wB$(4{q8EzvG!l`6$fz#nc-_gu=iFy5aJNfm`n#*@uIh5Gs#26_ZsZ}TrkJ!MxXSp4QrOMTt=;%{z{aH>vMUr zM|D7Vnp{NQLn1SEKA@(*wOQG;w>_;H`1vXV(-uX5eZ@nhzh`|%GX228@nI@&Us6v( zGUB>m5jdlN^W&8Z3&*hz_hheakWWhNw>LGDk(r$}kC**6%#LhmI16R$%{a5S1r9HH znKEMPLBd^aWE@f1Y}xM}93Pggu7g47!{|ENBHJG0a3jW3K6-U~bsPRUq?W_(Ukeu-nRmF~atr+!6m7go16J1r*vD2g;I0w<4qM6Rt%E9?n0y2nm z5Qk|fFMtQbI0&YQgWxHZ(;Td%b!+GgH_p-?R*B4bZn+^N_V-yf^b1Rj_`oRT2D5La5$c!>c6nTAHQe~ z+b;vm;TNTL3OLJXy(;~qWzsaZLBdb76=LL*;qa0UK-_?7DQ+0j$JLSk$3gm=P0?;= zR*NY!n5MLUxY=_X5%8S+WwK+O5Gv)r?ah_})25$Ie25zHqiJT?hqc@1y$@1$T|CT(^}bme%)5P#QRV&B z54D9iyUTJRmv)g?Bg;v$wq>^Dp@oHh}P8KTWG*oFi#;=KXl&JxEVdn zc1E6mdL-FyIaQR*HH(JVHqrF?@uA|sRWzsif~Db)nx(ok*Nv?^aoaGPYKI0lHV?Oc zW9-}ezi$8f?LYs%h7bQE!uLCSJo@tA``)+P5Bo>wn;-Z)_Wt5F`gn5v+y97RcYSP= z+wae@a5_EM$;Re-o&Gs@MbAJ)1g>##2)Mj|I&F|t0a6{7ijqbX99@A}lWmU=Ti~PF zQRee0rCu2(qKMHEll(zCFXYP>1I)okj3Pb1rD2}x&%ZOo^J_Ob?C^CBtRM&d-2fkfWEhSP^bc{({7fp}$#4ZNI0^XdvrTNp~B6f){yzz<(tg_m%v62hP8$R@W(>PJjx3g}JYF zE;E~w6@^a6)QbS~HiW&s&~mqiqJHlSDaLWbs2C{@BS9kR|BJB46T zD=ukjCt4I?&(n$IS{GvEly*cQLM5xF5*is7<|I_s2OK!z;ZX<=mEJV9Cp`bg3Nc44 zWE=-ets8VMurNNcX)%gf+^^JqBB@}U{G|$z_vNgvi7)xptPGu$uqDBN+5NkhI3Zl* zQG5z{xeh{_XO*j?<2no4q|NPq?+o9l$j`(N_@Cu#YeQfLe6FDAAKHDccI*&Q1A5_jJYZ}xR3dAcjK7nmO?Ms zF+T_WUHbP|7JFm$nKP%e_CkCX<3vd7x-`iWD10K1Ld^whUD2y>hW_qps-s9p6P4C;CT8C!utyPasl3Wp4)$^q}*>?75w^+X1S#LLg&BB?k;;XY0UiCIt z->3vScd{$qW@og;XJ(zc)V^2e8T{lpx6^GL=IL$4_nfd%=ZT%LQ6}5-#**T2yGv`xt_|cO^Yb{){kz)`JOO^jjJV6O z+{;l|*|}$|2_r9m;DS+PKieLn8F8cS*ojooc368FZ$y_i_@uxix6xr)B8w`zoKr7n z9JLji$~gTp8Gmfn=$*Q#!Mt+Cker27MH)t(vM450>})?r&-A{uQWT|-EmcLjeIdp@ z=0+)mk;nYyIne0Ox-)Ow?aq0$t28F5ruLo{xGQ^A8okSZK45;ryv`o)N%tis6P$%P z?`kAXb1K1`F{nV9%q`>K_)wn3KsF4frsS|wp*~s_s>>%>!U45~bJZ<6o`fvw5MQ6` zJjYi096fuX8=k@ZDj!9-^KgJ}h=}@!YZGZK*`^sIX^4e9_kyV=OHL~KRBWb|CW~}u z%QlPrtDhf#0<1?@8uR(d8fTU??Rr=G!^g&w*A{S9xAcT?kyn0pWy?!&s`HtC|B-KG zp{*mp|wgp?RVbR$T;UGvO>_pm@4VClz!pTo7Keoa_uDaFTddfMi^?hsa zoMP??X{{fvyWduA{niX=0}d7<0oqb;w*=XZ;vIwnk#%O1Zc4Xa=bw}2nG1?iUoiW-Oqo0m3`msqXjYc=g z_G<;>BJzrXP$#kI*Y@&C25z3jVp^g=7wl5MOcWAV)*>+m5}}AOfewxj`4YsF8WTnC z#r*_-e9DcjQL*=Xzrpk_IsS7NM_wbZ|9J0LZOLJENL5s9L#(jf9h-qtTW(aFV%JPa zZNBD#$}^eESI{^ah*D;$}0`tvT#`8IP_JRu*;Srdmy65`W9>20Hm*%Tz%6Y1L(_$F|k;RrE$!2$+O|Bf(Il z-@95fuGWmJHS=?DR-@(5)L-eE%suH|hn>>$E}tVGBAqTd4Z*QOMk#z72{37Yj)=A$ zn>ra;4H-5>I7y4lb0Q$oWs;ekMQkj zloXZ^LxY)2zO4w7U(`Dkkepug5$iS0MQpo8_n{7L%ryR#;}4%4i}9+_`5__77tz#6 z2gj7h!y)lhMT407U7e0BAX_?rNwi`{nunXOR+tN=Qexr)2LbpQGs6+1X%^N{<3i+V zr@Tw5O}#h*#6|2~AwLEQjpW8cLpj*vb*gZ8^JHUdr_nleu7vgO1t!z}b@%K=+Tv85 zq37t?i_{s(#s-uhVcykB+oDkU+bRzSRntkS7x1zzJ+mKYN$pf!ng@`7TlSkoIL%DF za)+KVizqO>m?$=JVLo6%fCWUUuwfzsB4He>jSb`obCF6dnoAB?ul?9Ap@hFz79*`1oC%BQz2jN;*~`ljT%{T%ka(z=?tvpGMvW%;?S zDr4}b&X%EqrS`FR6^HGAxq@8hI+nn$L`e})1Le;(M4tM=5oJE0fqup+Qtv1$p8W7N zbTNiYIsq|e@>HtLG{w|(RI`XV@-a*pmB%iMDV0YwF;`sDlg}4l&i`+J@8GvDr~kLV zcmD4GPWLW8AfVSIVpQ?u*Ek}05CGyJBoEHn1XT8)z6nmi;*!dL(NspDY?e1;pvc2P zAV(~GC*f)aMr%31T=!iXW8;dA+{=xu(bT`k{2do$f(0A_9N_lXvIL=)U6;$r*GvqZ z($}lhi^_zk-(8UK9K>%heU6^#C;Mb{Oy>snRLx<&Rk73yf%(bN2y-+9Kpqa4$I=%T zz>=Xi1W2>G7c9?zARk3+lK=gQQP1eezp5Lf+2Hq>pO6U=s*31)%*{ThFHa+wka&_X z*$Q2$f&)hI*zNtB2J8Ph-yeJQzsK;e|N5_9zgJm^U@!=M7+ptOWZPpLZp3)XN3U+L zZo@x^bn|BD{k1c>-W*TZmAD!Bw^#Ufo3}31tiQS~i|M@QFHN143~$eMdd!OGGL+k;Be*E@n2z)w2#9sXl)l7+G$~aNmh) z`EFCezFmTqzHIKE!JJlTWl3=_{SpEQxA<5@bbIUS^=K=m5%_<-9^TUJ(I2n2w)`!& zy(Rvno8cyZ32$%5(X}_ehTcCvewv0ZPg80ZGJR>mo~++dz}AZL5N~T#@i{u0;>rcM zhy+FpKBCM$7|z0)ZO9GU>&-mEbno9N3KdJEu_j9=Epfu|2zb*Mo~T6)0zqu zCe=z^o%NiNJ(Z#Y{fe@G@S8QRULRF%ls(_y#{rgG-j;ix1<)oX zWtAE!FN{4$&nz9qD`qjDQ=jc5=fibG1QJXehEx-TJ;9b2cD~B0k%z9xSs7Wrih$So z);@99+I!CKxvChu#uZRwt@j|#fJ1Z*<>O?BvU3ouBjj2s@~eiacj7IzMk5e9b{|iF zSWE?C!vr^vu~1=cUK~Y0MKDEC(kaOwY^MHrakkTPF8ji5)%eZmlX(UKU=H14Rm&jS zut`OhsL^M>a-e2UnQ|8t=^qI%lwPjEH2o6wZCWQPwvi#(sov zIwI_(`+Xwo+#GBXb<#xz_sKsvifO>qi8JUr$zJVrQ!71Nhq)c*eyo^#r_P!{C`2Yq zSt70WxO)abts9VfdjXR$zydPw9`*PmAI-(j<#Fm&Q_FJ1Da_f{$UmEIEmbu$XGw@tj`!fIUW)<&P&RY>cft z{awr;lS}fxz1f$8Q9?(j>|B^}RA$I_=HcQjx>a*ca?o@#m!7ehTG?=I3cR+;=8|k$ zi!aT#wBy%i2c+8vX9uL)R^=*x$vPhb=R?rZhoDf7cSNzKAwLgiq=}wdPuK>Dbj_%g z5VE!%GdlD0Fj3Vyw5%agCO_R!QUQR)&5}*`rvkd(t`-Hmm*?Y_@NsocZn^h1T+|1^ zrc882EgoC0B>+!O;k_g)$U$$ zx{>k~?XcWQ7lrh&>Z?kW3XXU=ku!tu8-pIE55sR)A zMi0~_(mB!Pvh8CIsdKJ`%V$~DbMV5e;={JAXdY+|mpn|FyIl&ySsIjG@HPuLb6{4V z9G4KuLl;2u7w#b}e~AcxJS1Ug23y&14+*ic%B-0~M(u9%LL6j@YP)r>AaE^{yp{=Y z7XaVVmF~<&KWPf^aHWFBED;o{GZq-0Cw*KWTXexrov*4y?C(M0=wmu$-RuE50IjUK z1G087#)K*@XI)hAM)Ct!vtArz+ zf_Cj`T5=1Ub!V9vl+f(*``vdSWAV~e1jNq1w>FiXvKyt}S?~3GpFrHO=qmr{96Z6I zOasHBD~RNFKTRU$g;e_i<{!(R@jWD#`tR|?`{=5swhztTa zVv+vbPW22PnLJp3u_!gU|I@8*%P<#DMf*Acr8Dp#7CL{ZZJ5OLqI5e^=c*K$HA^a+ zgWsW$TryFO_m_1Fb7<=9&j}Sl*SB}%q^B;s zOFNospv)z$O?lK5rL7`L?Z|F6l{s;URlQ~jaZG-j=O6m!ufr%N@QpQT&L4`{1oN&8r9TXgJW zoc7}^jyzams&$9|9sYOt{~_alr-X4zm6atl3GohCG`~b4;(nzEH2CG|tB2Pr_&?Ht{m(0lijMjNm$qjuE z;(*a1DTl^bozt{?#aYc2Nl?d3wX@;_^H3WOZrUs@viA%lkA+jjhR@ZRH5vW%*_HDf zl2NN8+>|#v`>5L7*@Y%HN|Douu!xB1p6_RFCFkTXP@K{SG8*@GH#WC&&raBld2|M0 zfIZlMpB@36VL_ODzP8oxoklT*1I7ZM-O%3d&U*S^#)N&ohR76^P@f=swp7d1f%?13 zXSDE{woU41d^FJnPn9$001y^zLcBHf zg@gXsy!nDqE&%(>lTcUAtFsE>#?__&R=1GZir&c0CX3;zX8gKcNYlCQK9>EY7qA3o zW6imqreVq)WUQ@b2ND){dAG?q?K%^RQ=vH(np2@Y0BX3^WJ2lghuY+VT4N+>VJp;_rZr?Z2&M>g$=fImj>NWo#p>|BI&&%eWB8s+T3~!8%85`Oct(S% zuGfDv28vQb^lPr-zb>MTa0K)hk?Hk+F6kxxCOc)&I0(sMt@q2?yBiV&XcPnI2!|5E zMFa~#Lx4*v@t2PnO-&Zw7!xY@Mk7gAz}eOHbWG0bGC8h*^D^=@HtPbNkm-a>hkqUZ zbwcJ!%PvjsMoaKYw{l2dlBTtVA9~RReFdD)9kq1S(osuCEgiLVDp{wJU6`$ZdDZ03 zcn*O)ik4@o za)VT!k%NGFSI*PwjyXEs7?KC+*pDz{# zb>0vKRWPS!@jy25dwH;Pv=3>2Q^Y~=EMCvVJR!kKu~9q@!+>bsux(hBjeXI@KDpSZ zyN-Qw@tr3duU^+VvT`!o^ZmUrjM#MtSCK;ZMeCj?0a)R7#p_oU&vs0hv$f84cDngQ z`f^-3j)Yr-MGM`vf5x>Ero#xX35$6!Me@!wDWdQBzG6_L%(>)PAc3!cK;zya3j%f{ zB_oY8chP0MzP{xt!JLy(^1bRQ^vzoxB$m9B@|A>Trh+DXRBWEkCQ&XQADRZ2w9q1| z9*)9|R!>L8=Qm>zW6%+7`hv=-B=^H~;fRk}9QbGeQs9dKbMQ5s#~YmXh>FLrZtz?- z>vG87DzEXY2Q}NB70Sqe;PkLg4{Ocsys0xUYXW|NsRw2L&yv~Ez3-UU>BQHhGpk~2 z8d)0M6M5>NRbXiJOuFzhj$?5gi{n`CkYjN?fa3uk01xoC&K9dF-l--eU6}yWeNir; z{A{}$>CfgfOZyw?zUh|GcrGU-54rJ4ixTT>Lc;Hm;+rYtNWPmPDS(P60P##Bs zrYzRE70d@*Qne~TQ21-DU^|ajeR@v3%>312$Ue&F+K1+Dj-zlK#T^O9t32DXnmbPq z?54VY4+i;FUenhP@|L}+h&Paw-fn42fuLPkKF6Co-h3h6e6ub+7$>6z93a|zKg{99 zXZY@FH_sG*#_LXeccWuO!f)5}+6~?j^(^+?>xJ%=2d#6!a4e`}K_AK*ms!wNWa=Ke zPv}E9w`Eq;F?Eiqdw@(`gJbJK1Xy&l+v%=#OkK)+ZKCf#D!o_+WbI"IqbZ*0%i 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 xEe7zki#T-Ywm7SR5mu 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 delta 6112 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 z_catK≫HXDx^sAZ>UX73c+MO9^WL|RLlm8Q1X zUAktAj(S_!Pr9S)cMg1uXis@VPQchz^Zryxe<`t(h^Q-X0o5G{T$BK~Nzw{r3F?ZN z@ydb>zH%X37&+pj+E;WSEPtxJtR~`xyNVooS5FkCTA(@T$Ie2`O?c%839me#VKf2g ztA0;;Ws!u5YvfXo{fwZ^DrG>&>F6!21;1n!SzQm=)|%Scg~I#dmgj=Z+E>**_JBbq zz1(^-bX!Kou>u9bUA09!>}!((TrmZ>xfiq+jNKgE4ASFEV=J$(6Mx)HK?Z3p(nlv3Sb=&DPNFWdOCjW4^>SwV)t z_edMqSA8RHmbx!^?TE@@RXTfJ* zP@frFS$17Dk`d*RpRoWnS)ty8#T@u>DG7FuTZV&4?ALm-#cF=`#^_52cw%eO5jW_c zo422XiMT!XT@nZbW?@eX|bA zqN1L@3ES9#!pZDqj>1vZsZZg2GenME0!<}ki?|A1dS)Pu$QdsleQZM881+sD!;_QK z&hhDB(BiKqU!iM^y1n6WaN6k(hr^C|yo${9x`UI!uz!C%7`BY_@kien9S>T@d-2z2 z1HK=B1l@lB#JJ@`@|M7jNf2^@Km+gZTO0UCNM7AQ$K2w=wEG<*1w@ z$$J4!t;1-;&S$0aMV-ye^9yF8E)|%Vzapa*v!XNB_d!Yhl)?lXX+;6!T%=h+a${YJ mF3xY79UX|+b(gCtd#fde#?#a7)Bg_u0RR68W1hd^eE|UZ0Ph$8 diff --git a/build/openrpc/worker.json.gz b/build/openrpc/worker.json.gz index eaae7109d1ad5e5613ba22393d60c4a09e07eafd..33b8c5ebe2451cb053b940d3e46ec0a7d909bf7e 100644 GIT binary patch literal 2579 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 literal 2577 zcmV+s3hwnEiwFP!00000|Li?&bJ{xAe?_C`OLNBo0whiO)+gE9%}ig|8pEY|QcC z2`j2xzyth|t3aa5;Td{AyucQ|2O%kEA;jC((V+wPcy3`2)Ra3C557NPMm!DqCw0N* zl(pVF&X9r)*uoA-TTova47azp6MoIc0khE?iT?P;#T|$%B?4O=pas|)zk_Vf6g;Zd znfcd3{t=Rj3o?P$71)Z4OBh?o@1pNFWJFtEnNJ)C41z2A6D;KSP|-L27}q&bik8hGgr4DG-dftpur>G);&eP@_J$X7g)ydwYv5 zECbIYVulBJIe?k79!6d>Y+;`W;+Z7~gkHwc?9k_uhD#QGomyu9D6_7al}U}QKiE_7 zh~8#+B%ber!FX}5n?6wn0uPQlosNY+2i{13dN;T5P;fr}YvuzUoX&47OdKa9i?~C< zeGrOjJY(WYu&|$KT41gK5D~HDLuLrEunGxSe4Z~!T;F#dxA4&quoX^Esse)V3k)}N z3k&!=paL8`P$B@m8NL9UDBTiHZf-4itDD)a0*)=UXDo2t8w*nf5mRJlkRHpd6`~Rm zv@*%>3z!?dw~IC+1esNzWiK;w#W~iQM`B%$I^F(F&de%KqhBamT2Yjfs$xme1eBua zMt72dt2FM2wpA6COX*67GCIKMjA!+L7G~UeYyKSO{I&RlYiWsynV(9r?pp2Ok;e;z z@aV+C9%YG7QD?*Bb1O0T-P2UHRZq4}ONudE=iJU&=?_#*gAo$oaRtbw><(Kv5H23z zsZzciwA+)gOUve7dmNehLtk)BSKHMdLwn@%QQIR@foKz-wtc}LXaAW1Yfbq7eeCt# zcJ-XH&cZ(!8M)w8^c5ng99Q80y%}-tuCw4v1o;NLf@RK=R!u@?N>Sr_snmO$&}JGA z2z%iSaN5adfImUm(~8?4!c_AUm+H~9>+!W45ITy>FNZ`;qvn31`Mn)3`zP)|4R>)t zZaH7EaSC6dQ&_~F+w+(<;4WpozN{dX;yNsWxRgzBf+(p(*s>WPE+fX}=<@hI)F!HN z;~F<^-`u#<(*i3_8FA@Pi1wnQIZpvs&HpUgFA1B}vd*icFU)jfo_9iocELQaa9O=v zO@*cXG9F7%<<>S#tkhhXnwg)*vNe`%-z?j^lYGl|!N$CzJ<}lhsfpEd0Nrz)eTuMc zB~Ot@&ohFX>QqK}|H-9_htjSyx+iX+_2(r>9tb;PS@4F_nWQ#x@u1(ebi>sH@#7Dd zAVJ(~hS3dY!>`i(??d=Mt!d{KMSDrv(}J@j=YGCITm__turiYOA?g|HmJAK6x*)Yi zWrj#CTS)-3=#4t)^*jB1b?}Mb!9Nm|bhiZJ# z#s}RuqjOYnNH!#DDl3|s5GLOXHPI}{R%8lv*L9X-fo>~qXdXcYF?goab_4Ml7^lL_2)zwaM|XxE zrof_p*UUHLA*qN^)e6Y+e&P zAVs-I)J9*_6vW1^^d+e*DXRq%T21J-%fA)5HBZxh4&3a`il{LWd&E(L>%MT&I4(F7 zxB}vyanGYF%RSG_M*^~%zh{_|xR+sWl7W=*HQP{Th^^>7WP0?YOS)mqXewU(=u9tKlu%@WSftobhM)OM>^SL)Wtjr2QY5tYoAG?r>7q-z%})!t`Gn#@6C;~N|Q zifsJbg36hcMXVEVE`jTXoJ(_DKk7`;&;*`4B}ltq&U1O~J^Q)@ zEONL;oV#nPx>87S%Cof;YQ^c3rVve2`cnIvdF=fpkG$mRB(L;+LOMQREH5D|cw nIct$f1dN3zG{4AfuP#+`e1hlmoB4kO00960oSe!jPI>?U0=oTD diff --git a/cmd/lotus-gateway/api.go b/cmd/lotus-gateway/api.go index b1ddd369ee4..003625a84bf 100644 --- a/cmd/lotus-gateway/api.go +++ b/cmd/lotus-gateway/api.go @@ -71,6 +71,7 @@ type gatewayDepsAPI interface { StateSectorGetInfo(ctx context.Context, maddr address.Address, n abi.SectorNumber, tsk types.TipSetKey) (*miner.SectorOnChainInfo, error) StateVerifiedClientStatus(ctx context.Context, addr address.Address, tsk types.TipSetKey) (*abi.StoragePower, error) StateVMCirculatingSupplyInternal(context.Context, types.TipSetKey) (api.CirculatingSupply, error) + WalletBalance(context.Context, address.Address) (types.BigInt, error) //perm:read } var _ gatewayDepsAPI = *new(api.FullNode) // gateway depends on latest @@ -414,6 +415,10 @@ func (a *GatewayAPI) WalletVerify(ctx context.Context, k address.Address, msg [] return sigs.Verify(sig, k, msg) == nil, nil } +func (a *GatewayAPI) WalletBalance(ctx context.Context, k address.Address) (types.BigInt, error) { + return a.api.WalletBalance(ctx, k) +} + var _ api.Gateway = (*GatewayAPI)(nil) var _ full.ChainModuleAPI = (*GatewayAPI)(nil) var _ full.GasModuleAPI = (*GatewayAPI)(nil) From fbd003a22ba7edabf38a3db65de3d4c40ac8fe85 Mon Sep 17 00:00:00 2001 From: Cory Schwartz Date: Wed, 21 Apr 2021 09:46:44 -0700 Subject: [PATCH 2/2] add walletbalance to v0api --- api/v0api/gateway.go | 1 + api/v0api/proxy_gen.go | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/api/v0api/gateway.go b/api/v0api/gateway.go index a5ea73a01ca..603c099e8f0 100644 --- a/api/v0api/gateway.go +++ b/api/v0api/gateway.go @@ -45,6 +45,7 @@ type Gateway interface { StateSectorGetInfo(ctx context.Context, maddr address.Address, n abi.SectorNumber, tsk types.TipSetKey) (*miner.SectorOnChainInfo, error) StateVerifiedClientStatus(ctx context.Context, addr address.Address, tsk types.TipSetKey) (*abi.StoragePower, error) StateWaitMsg(ctx context.Context, msg cid.Cid, confidence uint64) (*api.MsgLookup, error) + WalletBalance(context.Context, address.Address) (types.BigInt, error) } var _ Gateway = *new(FullNode) diff --git a/api/v0api/proxy_gen.go b/api/v0api/proxy_gen.go index b53f802c36a..171a9e05afd 100644 --- a/api/v0api/proxy_gen.go +++ b/api/v0api/proxy_gen.go @@ -442,6 +442,8 @@ type GatewayStruct struct { StateVerifiedClientStatus func(p0 context.Context, p1 address.Address, p2 types.TipSetKey) (*abi.StoragePower, error) `` StateWaitMsg func(p0 context.Context, p1 cid.Cid, p2 uint64) (*api.MsgLookup, error) `` + + WalletBalance func(p0 context.Context, p1 address.Address) (types.BigInt, error) `` } } @@ -2064,5 +2066,13 @@ func (s *GatewayStub) StateWaitMsg(p0 context.Context, p1 cid.Cid, p2 uint64) (* return nil, xerrors.New("method not supported") } +func (s *GatewayStruct) WalletBalance(p0 context.Context, p1 address.Address) (types.BigInt, error) { + return s.Internal.WalletBalance(p0, p1) +} + +func (s *GatewayStub) WalletBalance(p0 context.Context, p1 address.Address) (types.BigInt, error) { + return *new(types.BigInt), xerrors.New("method not supported") +} + var _ FullNode = new(FullNodeStruct) var _ Gateway = new(GatewayStruct)