From 2bc205ed622bac83f07221bd8f806b31981047c2 Mon Sep 17 00:00:00 2001 From: Fridrik Asmundsson Date: Fri, 21 Apr 2023 12:02:40 +0000 Subject: [PATCH] feat: Add eth_syncing RPC method This commit adds eth_syncing RPC method which returns an object with data about the sync status or false. --- api/api_full.go | 1 + api/api_gateway.go | 1 + api/eth_aliases.go | 1 + api/mocks/mock_full.go | 15 ++++++++ api/proxy_gen.go | 26 ++++++++++++++ build/openrpc/full.json.gz | Bin 33866 -> 33945 bytes build/openrpc/gateway.json.gz | Bin 9539 -> 9627 bytes build/openrpc/miner.json.gz | Bin 15944 -> 15943 bytes build/openrpc/worker.json.gz | Bin 5245 -> 5245 bytes chain/types/ethtypes/eth_types.go | 24 +++++++++++++ documentation/en/api-v1-unstable-methods.md | 10 ++++++ gateway/node.go | 1 + gateway/proxy_eth.go | 8 +++++ node/impl/full/dummy.go | 4 +++ node/impl/full/eth.go | 38 ++++++++++++++++++++ node/modules/ethmodule.go | 5 +-- 16 files changed, 132 insertions(+), 2 deletions(-) diff --git a/api/api_full.go b/api/api_full.go index bd77539d3..af62c3b0c 100644 --- a/api/api_full.go +++ b/api/api_full.go @@ -812,6 +812,7 @@ type FullNode interface { EthGetStorageAt(ctx context.Context, address ethtypes.EthAddress, position ethtypes.EthBytes, blkParam string) (ethtypes.EthBytes, error) //perm:read EthGetBalance(ctx context.Context, address ethtypes.EthAddress, blkParam string) (ethtypes.EthBigInt, error) //perm:read EthChainId(ctx context.Context) (ethtypes.EthUint64, error) //perm:read + EthSyncing(ctx context.Context) (ethtypes.EthSyncingResult, error) //perm:read NetVersion(ctx context.Context) (string, error) //perm:read NetListening(ctx context.Context) (bool, error) //perm:read EthProtocolVersion(ctx context.Context) (ethtypes.EthUint64, error) //perm:read diff --git a/api/api_gateway.go b/api/api_gateway.go index f4d6c20a0..0fa329724 100644 --- a/api/api_gateway.go +++ b/api/api_gateway.go @@ -98,6 +98,7 @@ type Gateway interface { EthGetStorageAt(ctx context.Context, address ethtypes.EthAddress, position ethtypes.EthBytes, blkParam string) (ethtypes.EthBytes, error) EthGetBalance(ctx context.Context, address ethtypes.EthAddress, blkParam string) (ethtypes.EthBigInt, error) EthChainId(ctx context.Context) (ethtypes.EthUint64, error) + EthSyncing(ctx context.Context) (ethtypes.EthSyncingResult, error) NetVersion(ctx context.Context) (string, error) NetListening(ctx context.Context) (bool, error) EthProtocolVersion(ctx context.Context) (ethtypes.EthUint64, error) diff --git a/api/eth_aliases.go b/api/eth_aliases.go index ccf0317d9..ca0f861ac 100644 --- a/api/eth_aliases.go +++ b/api/eth_aliases.go @@ -21,6 +21,7 @@ func CreateEthRPCAliases(as apitypes.Aliaser) { as.AliasMethod("eth_getStorageAt", "Filecoin.EthGetStorageAt") as.AliasMethod("eth_getBalance", "Filecoin.EthGetBalance") as.AliasMethod("eth_chainId", "Filecoin.EthChainId") + as.AliasMethod("eth_syncing", "Filecoin.EthSyncing") as.AliasMethod("eth_feeHistory", "Filecoin.EthFeeHistory") as.AliasMethod("eth_protocolVersion", "Filecoin.EthProtocolVersion") as.AliasMethod("eth_maxPriorityFeePerGas", "Filecoin.EthMaxPriorityFeePerGas") diff --git a/api/mocks/mock_full.go b/api/mocks/mock_full.go index 12632bc2d..0b0e3ca4c 100644 --- a/api/mocks/mock_full.go +++ b/api/mocks/mock_full.go @@ -1476,6 +1476,21 @@ func (mr *MockFullNodeMockRecorder) EthSubscribe(arg0, arg1 interface{}) *gomock return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EthSubscribe", reflect.TypeOf((*MockFullNode)(nil).EthSubscribe), arg0, arg1) } +// EthSyncing mocks base method. +func (m *MockFullNode) EthSyncing(arg0 context.Context) (ethtypes.EthSyncingResult, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "EthSyncing", arg0) + ret0, _ := ret[0].(ethtypes.EthSyncingResult) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// EthSyncing indicates an expected call of EthSyncing. +func (mr *MockFullNodeMockRecorder) EthSyncing(arg0 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EthSyncing", reflect.TypeOf((*MockFullNode)(nil).EthSyncing), arg0) +} + // EthUninstallFilter mocks base method. func (m *MockFullNode) EthUninstallFilter(arg0 context.Context, arg1 ethtypes.EthFilterID) (bool, error) { m.ctrl.T.Helper() diff --git a/api/proxy_gen.go b/api/proxy_gen.go index 3a9842eb5..459fd5864 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -314,6 +314,8 @@ type FullNodeMethods struct { EthSubscribe func(p0 context.Context, p1 jsonrpc.RawParams) (ethtypes.EthSubscriptionID, error) `perm:"read"` + EthSyncing func(p0 context.Context) (ethtypes.EthSyncingResult, error) `perm:"read"` + EthUninstallFilter func(p0 context.Context, p1 ethtypes.EthFilterID) (bool, error) `perm:"read"` EthUnsubscribe func(p0 context.Context, p1 ethtypes.EthSubscriptionID) (bool, error) `perm:"read"` @@ -722,6 +724,8 @@ type GatewayMethods struct { EthSubscribe func(p0 context.Context, p1 jsonrpc.RawParams) (ethtypes.EthSubscriptionID, error) `` + EthSyncing func(p0 context.Context) (ethtypes.EthSyncingResult, error) `` + EthUninstallFilter func(p0 context.Context, p1 ethtypes.EthFilterID) (bool, error) `` EthUnsubscribe func(p0 context.Context, p1 ethtypes.EthSubscriptionID) (bool, error) `` @@ -2422,6 +2426,17 @@ func (s *FullNodeStub) EthSubscribe(p0 context.Context, p1 jsonrpc.RawParams) (e return *new(ethtypes.EthSubscriptionID), ErrNotSupported } +func (s *FullNodeStruct) EthSyncing(p0 context.Context) (ethtypes.EthSyncingResult, error) { + if s.Internal.EthSyncing == nil { + return *new(ethtypes.EthSyncingResult), ErrNotSupported + } + return s.Internal.EthSyncing(p0) +} + +func (s *FullNodeStub) EthSyncing(p0 context.Context) (ethtypes.EthSyncingResult, error) { + return *new(ethtypes.EthSyncingResult), ErrNotSupported +} + func (s *FullNodeStruct) EthUninstallFilter(p0 context.Context, p1 ethtypes.EthFilterID) (bool, error) { if s.Internal.EthUninstallFilter == nil { return false, ErrNotSupported @@ -4600,6 +4615,17 @@ func (s *GatewayStub) EthSubscribe(p0 context.Context, p1 jsonrpc.RawParams) (et return *new(ethtypes.EthSubscriptionID), ErrNotSupported } +func (s *GatewayStruct) EthSyncing(p0 context.Context) (ethtypes.EthSyncingResult, error) { + if s.Internal.EthSyncing == nil { + return *new(ethtypes.EthSyncingResult), ErrNotSupported + } + return s.Internal.EthSyncing(p0) +} + +func (s *GatewayStub) EthSyncing(p0 context.Context) (ethtypes.EthSyncingResult, error) { + return *new(ethtypes.EthSyncingResult), ErrNotSupported +} + func (s *GatewayStruct) EthUninstallFilter(p0 context.Context, p1 ethtypes.EthFilterID) (bool, error) { if s.Internal.EthUninstallFilter == nil { return false, ErrNotSupported diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index 74101567bc9311d987dd1acfb998f494532b7371..8e12e7ed335dbecd29ef967ba98573cf060155a3 100644 GIT binary patch delta 31618 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 D7GqnV delta 31642 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 z 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 delta 7334 zcmV;X99iR=OT$XAVg!HP!~I}Q#Wv&_w4sk`TaT=Jj@=m8ios6$JD-tz4Y7!+$e=Z9 zB*rt`wrQAaf$&?BH9%5tMeGkM9PNc=b#!9CM87^jG@W66)U8zRo)X6Qx(DSLAIiX* z7|*&3cuMHUWbH-JpEYe1{p0B>@5sZefbI5T|g-}FfS5o0-J;fziI8>=5%N=74xyG$e$u%X{D&$%&_T@;qqINv#PDhg z5VEFV4Z)n-Bsx;tC(3ymQL{7Zt2^*#*t3U&oBiovVSCX0wLe+f!|Bi6!N43i!vX%+ z?z?^DE|)X!)|lNwoiLvb90A0e)>oUho+yl|Cr-IPi%i1W7P;t+v#XW!bha%kbXw?Mk452&(-wemz0Mq1_ zr8uVIn2KXQZH{@cTf#9v0RPYN&suDfcC9`W8#|6w$@eI*d}c?tQkLCC(`%bKs*bc; zcBB;`Xl7^G!)lHbjKs|*=m&xQ$a%)$UK!7Tz^unHATXOqItbu2rx&qVsYHY4APxK7 zvec7W2R{M*lbQ!Pe^?NSd4hbyxy`}M3T_hi%hwcvi>Mm(rwi??%i|NrSOhd##!o_s zCA_2vtQ2?QX5I#EvS>|Nk6Up=5gk*iTGmeQ%@o?u3$XZYzuWJ=?)6^x`=7f9qkexh z?7!~rjk?`rF|8k+OpUI9T3vvHjlWEUG3>l54pyL)B@nCdf0)T}w;+P;6wlrnhO@Bc zqoKL3`9%5c2gEaqLP1+9P|7HhgIFrybHGYbWOC+hAj;e|y}R5s#t<5l z!$Wg0F~@^Re-{qAhlbJL8&3Me?s(kY+Z%QVJv|vL6#rGnwVv^#|LEv*uso+g``wN{ zM>h8>9Sroef8vAsdj;`9r+7xJo{Rjgt)@h-cRn%lnDYhMcyCxii5$cdV$6b-rNrdS z+dz!jHDx|XZj;TNNClLu*FKSIDIM$=M7x~g*)hnmy{icz=vHK9@?R@xN6uuamYt%E zqZKZ%gvlTXQUn1fOAu@&Z9IfcZ=|3qIH7ri5+bOhe`80s#}xRq3;p}jLk7u6Ty_I( zGt5sUzf4-%ueykSo zkDZ5I;%%MM0JRN+ve*D-@e6ql5>enydNnePtCal176LOSWR}n=o6;nol4^KR5W*C& z+8IFhO1bpuTHLcCm5@Q(s5%(WSgC@~LKQqL2t+x>vr`|VIl%A?)NxL5y+swnIz+(@ zvr)oGE~jm06iPExnxWDR8w-F`a%a!(gc->O z3e(Z*1MsEGU}XS^u(Y5Z;b&vVNjvQbC;?^`k0{E}NSJ;NewJ8U+j$!MhC(zj*xx(s z8WU*j8NKmjXbi@O{euHzAMBd@2LpI`us`U*!|u2XhDL9H-{^zE{?OP5hr|BbfR?Td;h;J6F_^p26S%}4IN@CN!AD#+e~D!_Ep1JpC;!X3 zN7&JUkAA^;&fM1w6O|SWYnx%6>-t*cyc7KA74eI3Uue@OB2%ebF{UzgQ7I?f+(|@{ zfQlE#QQD^Wk+H#tJa>tR_#wC44(~JB)D#Z*864zHfbmBW4CUqPLvC79$~@#uc>Ul( z=Rw4Q$T#FviHDppezbo0^j|^Ni~Bko&mEBHsgk)F*w4uv?I1 zm@vF+=TxLY6nQ47qpBHygjB-CnjVR0Rc-W1Y~6#X%zS0$D>Gl2`O3^!X1+4>m6@;1 zd}ZbqRcu8o@evWbD*jdv#~>aZp?j=M2(Y zUu$uQpl35N;sS+n*m#?)jT0}ajb|1rHvDnMhO1&H+vazN#l=p}AbyW53_W^BYMsgt zX%HeDkajpfe|f3Bc$IyAMewJZ|0RZPrC63?Sr5jtdd1~V z&LFPOtjgF_4hmem&{&UCHO!-0%AE?fPNJ+KlgarA`5QNN`A z3&fwG?}I5kM&{9qbMn_e(k%ffB)r&}?kjc`Q?-;T8L&a&RlclN%QSUrE5zU8yT4L< zsV)V32f$0g+R9Z2lco+me}|=2nm7${o$$yE7%2^!fA)D<&FV9wHK;!4twbr!k6&p{ z;#m2XlJ_D$HG^Hk5v8|9sbj&fCX*>SuT+BoS)gG~=GwV!!e#VgJ0B^5$T9=^@8Mc$Iw#3Y$aCXqiV0Ge&122y39?Y46hVPH;PTMx)Chmzdoi*? zLns@JJP>JlE59Y%y~M4hdjDQ&9h8ikOY*2;o%_T}pb1+6#3uyCXop<&b?Q1sGll`1 z$0qHAc&Tj+KUStfe|`T@5+65~ywL0Ry1gcIGnB2PY#n9mC|gI_I?C2jwvMuOp1!TK zUs?WpbrT7~cpNJSeR-k%|R8TIGe1 z$#TL7QV};~A!%u64)ys+aJ^`t&A4*-b+qlYS4H(bU{qhF41XmzWqJp>6Euad?H<7ZW#MzS*XT##c$QSVL651xRr`*x+Is&c;T9e9W(HNT-bS0}( zYN?{*4b$;%ae>=Q&%uu2SS(Ae2JNOGRMV?aMt2J8MzguID`*={s&wFu(0|2#aRIn% zXq#8yj$_z0NFxhGB=C!t-A~etKsIo8FhQard2^B^le@CE8F5ddXnGZE$jz=*;cbtR z9UT|BAnOF~yE=EDGx5i8Z~Xf#3YlLRi!hq$%1 zjs0Y{Rg4Oc?%uwAJnSd=`F~0oQKqS4Nv&r|hs6a`zSzk2F|e%KR(}eD;@Xh|EqpuFDEfa!?lr`Jz|~9b1$|N-td%>T5;KN}D`mJ8Eu6nBF<48R z7|UX_{>5RxwsWyGSuKewVmxrt?ez!44MmfcT}HUsEk0~uhqFHD6uAlB3*Jb@x=tF* z*d6#Y?AgP?&Hi+-u#s7tUJrfMU3ePh~!+uBq z?C7JAt9SJGG{ZIeeL-uu2MzxY@0`#(`Wf&^4!b@&BtPCmcnsY5Wq+vj&Gb^mvLG&Ah~%-~;d-|8Lx`1~Z8YKm=*T@y}ky#X2;jt}qfY~@dPmp4oI z--+G7n;5_L=C}RX+_}MbV{>@}mP22^my85^&r;sx66Lsc*XYXjPb9U0-%#0+!o3$6 z=R&+-fA}4L>vL!#f`4LTWCL$?Y8#G;>?!$(KHM8}K~`~W*k?z6C4bi`Ro{t`eS@hX zWm;C6`3chKCvt&9NI?Gd%L0+?>V5j(>zw}!|C7zv4Tq9Ot#DSGi|6a@@%C)+tC@Jc zQcY87Z4!ke((*@%CncVgcxsn;YN^dKC`i)!f7F`mkJ_s4>=xwi zee%)t4B~gU09jyc!6RUSIyOi?7(r`<9GTQVs4p0N6G!#M>uh6L+twL0rEX*8gj7ez z+hK-#1qqOhx>uC@d_2wQ%rArOfQSQ zneEJNBDAA{Nqm_05%7)xLDT-7>w2^xXN*;3kK!O$2{R>zCR*+_Ve^A@M+Juy` zOdpH6nP-00%!F#IY&$4OVrIPiZ|K*!zar6j4arsz1|_NJ(`jr_y^q$}))*)yDrbO=);=o$kL)0>_~8Q&GucYVv>>`o&y9Js27Z86$K8AJ;2N>TszklvmRgx|bp`jGr)TG)_%1b4d zX3()$kXC*XNYz@U=;EIFs7SpJ706gxZtlDOU6;hfc9oQ44w&@DMvn#b0@_x)CC->9 zc4oTYFUWSj#sI^2hT$x1rjtlvW~%#os&J-NF+QipEzyJ1!J;x)o?V?%f|U}yJta8% zW!wJcTO-Q-1_k-Ggusu1l~rLx_+HRaB9AsFW%k^@b&M!}_0q#eT7hiOJl#VUMyQ0y_T%)GMrdd&OiY>PPt`O}A``Rj zB&oO-BTv{fas$c<0gkP0SYkAnrrK6t_OPJt3UTY6K=R#hkqNzH$Fcy196dL zjjRM%c-l8cJAaqJG@*HkpaHMZFX{lN5fiyl)4?!l@Rc6%vbmL<2{3p9`5G877EuxLFJC92~D2^sw zDmtJ1QhzT+l=jeh)XYiu2M8LBiQpm}k|{$WT95Sai*9#dz`2W8S;S-D=qzTKy0673h1;~~uZBl0mhF{x(|#odcUSXNwp`ym@uACFR6d}r;r z`owD5R!MLEvR!p*s=T8O!@&f87l z2}j*z0uQ$`r7|m(S*7nhHm-NjEvV{2$omuUZXm8%>op5u&1xPzs7mgaXkAvzgKsC# z0MqMJTu^brEmralbbe*w$GN=(B%~5TX)f7hN)v#zo2FoRhy6vy>olw)YBrv-fLR+A((0fGHh99(T8nnSo7R^ zTB$rLOa6(fi^X)vzY$Rt|Gcx4D%n@ZyGcH|fOpx40oi(v#ZW7aI<)=q4A@hcRFp0u z^v+Fvr1$zKgFhVS>)Eg6uRs3x-+x>9;s3CEw)f8WzWnFN_`3XX^!~d4!9R7*J}A;HYlBKd@;}wf20c^u$C&_)n^-~uMa7<+SSxRi|QV*WkIH0vM|I)BIt|FbV zN_m#Fs?JzXP6B^1snxhuC4WU$S0EZjDe@Oe1&tWU`bf=lT#>QM7_nsk znDYyDtci#@V(!_+Sse_@>Y37knU@S3dexNj0V!QL3cC14rMARQ(>E) zsR3JXoVsBO*GEG7QjMy_0IemKMm_V)adsC_| z^v@Hq$puM3&P-UkWJY2W)|a-)Eq=T!d1~@;SXS|tqMzs7B71rQfoUPTX5>r`pfzPC zfw3d*XiJUWwDioZP03LuN4F?PV{*vK(ZoBUoSTK`K^v!iV;*u$a^?{|JGV`^q<*MB zT^RdtjxEQB@vj-MEPrTE<0r(AaJ<0IWD-65N=zd%NJvJ^#r2gLO#y|`2FXqld}?A9 zy!_}mH)CMjBqwnK4GT~cG%+7ZNzN@%$SXqkN2qDyTZr^XY_4#JoQ)9a%P>HsDa8<> z15X~+giPduFD>6UL?Pjx8H^S0nZ)SlXPfVqRVX52l{#3Coqt8n9f!ht2M45qqdn&H z5mP$2p{ox07~GoYe91K`-9zafTR!d!U7@)re(_5Y?c*c5Wl6Q~3>^JUgw%>u8G+2@}o&mS@Gu z*|*`kv+SxepMNE{i2!dV*z(lwKRehjD=WhGsOIf_IUvOIvw@2e--!VbMgG!D{b>4R z{s6U!AYP%$*?zpTy#On++FfD0&7=kNyS0-7TFQ71$_heUL15D8);c^V>b<7R^&Ja( z#nm!58nQV*E58b5;3xxUi_X;;@w3j=#5)o5CRr({*?;mzVFbK%Jlu9`1yuy<^VRB} z>cQJ#x2!_P6?837?~+~GRZy`coZdj@&M`7&@0p|nHOb%E#M{W+6}zkQln$al1X1&yaZE8Rxai}xk&vueJYBQg| zu7R!Y7*ux*syhbN9fRtQL3PKVx?@lvn?&6)sO}h4cMPgK2Gt#d>W)Em$Dq1nP~9cu&wl{2N$4!O)M@NE7Rk5sr?l8_rIRz7 zMRR^meqn9C!b!P2mCN&Sxjakn$x5<=4c=wh>o#%GSN2-1?ObM=pQIV`%bXld?v;?s zxM{!Q6*M4nTjofmgP#yPG0^!46K#w>nqrR~{R2eP8LpS|6805QqiS1(+}BmgWRA@l zqkoyqS$d3-&$>48VZW?4F%4QjgSd7@xda5+n@MSBDsBoc!+teKHuPA_KW!r2gc4#C z6KhhlO|G}KcUwQINUbz7Y)o}I+{pc;%8ZauvF>(t_p`#%1fEfuVT< zR#)&2cxLK(SgDrpL!yujXwofu$K@=CZ_?0c%Rk_%(G9ys!RPwxUH#%B{0@s~C($S3 zjs^u7h`ZFbTcG88Nv!Apsh}74w0Y<8HSqeerj~6o7R~H0_+G4eiBiRn-(2WZXg1)@hWnindy zmN$pyl;wgIwlVniap}uS;gnD~(?pTgG;>-AeEsgTx_ItzSXO0{QM$K2JMl=&lak)uFpObXSM&#p>c-LDk2aRh5b>DZSKQyt_OX zD3nxP94Uq)RSzkiTN`SD#f!-7apIMTM2SMn)5&riq)~6sI~aC5`jO=rH&`do0=3Hb zaR5c=ogYl_lEnyk0r5W(!rLz>-1ik&R`JE_737!bEa;eeslA|niX${Vw@WKcB*2#t zC=XAHMAP$cTd}g%xu5bl3%~mXE~)6H@}H#X@}QGYB{3R_)yO3sJZBjVC2Zn9&iRAt*OB)ILG_Z zca_34YFcIwBw*GTrHOHHyj#oCaMGQ@?rZ;C6DBdG*)gPF7YrdVRmo;OM{WkpZ{jh) z9)KWh5*zktJenLHjAo`OE_zvcJMoTE_*bN-3h%5ve|TWCXKw&2hdpnpO(o#Xv0 zdV|QDHQf+y@|f7#KgL!if2KMpVNxGreeTSTp_oO}=s?@1cOGCA-1%?7+<&!j=^Cv0 zi~-2I;f?5>_$e9lnp`@_#ES<2#jF76for3GZ6v@gHnttW+y_@H>;bvo0&+NnwoH@pPIUE;xh%mk)9(DdY_0$%7Um-stG=-rHu>8<2bwp?3V(aybN3VAgaE-u z-f9KC)qYa+eKTJ3^@fXw;ruH!5ggrl)@u4Nf}<&$kGvbScK%E6|8_PHbnX0izFwe* z#b~_1qs_x~vq9tG?bvvXNllNrm@L0@sW~3!OU<{4panKDbRW8qoyFifm7vAlbSy_p z$5Sj#OYjQ>>k5H+)PD-l1t)wVR8?fI7O`5yY7x6zB6c##7qQ1HWZs;+^cK$TW>Pf) zp-hlope5$`A?uu8vU8WxMGrVb@cE0!sEZfSME>sM0xf<5uh!7{9PLQtrs9iSj56_? zz^6pwmVmD%h128b)6p8!!N=syt$S{Aa-F*1?#2RcI#u{sCg z`wT^sQ?j6?5mkA^)%e0wZ)LKjA6&2y-D_oX&`N`J`p{6RF+6W_BqJUA#7hk?!1 zSQrWbMWXQYm-z__V(Z1Gej(8NzEsPo--5@lN)dskXUq0L@b3f5|58p5R-Qf zHCH|0jQJyi*d29m_Wfe^e3X1xTa~cYYoKaw zULwJvbbnzS&3Z=MdNGa;g9pE&hpuEpPxOeaPQ^`AGdMPQ70Wh(c}+@_`q6IVP4>~Ym#(4usiPo(RV%Tpw zf;@w#P()XXLItNmQUXRFa0w{>di%imTjT$T-GBf0<=d4>{FV+uu3 zitM2cCTuzuHV>a&Z~qEAmx%p}9)uYq4iNS)H}f@S5}5DU5_(?2nu#zdHEGKGX=2$V zhJXGf8%H^nTN6>^;a2vEsa02%JDpflX)tqV`P0zmw6( z8qx8H{Y{3>5IgtxEBDr1-6AQ~p5}0;icWLHd*ug8vweb~Wn+SjqcPv{LYIlrN{T!s z7P^;jE^n~o@G*Rz^aes?3Q_EbgVs_NJ%2;k4l=S(S`bG<)hAwX^T{}pR#9{HlI=-F z%Vf}q#U`rQV3i%@gogU7priz2tE3t=neubXg;g@{gN3gbmYL_nPLDdEpk`xuHp`(_ z=;;fyEe;P0Yzr4bhTcN+X5%z7D`EhOEDHa$PMQX}mO%_izEMy^*(VVyj;}~`YJZ9! z9w5|0U@o6gVj))qS$HB&0wW9X=?8og_rcW)U6U{rLJ)=r*a|Z7iCC6B8Et_*;BE-P zWGTWb`1@;e_WRYR%m2K6bNuV4^Z&ekbNTK+=Wnil0f^jUmy$K#N8dshi_=jLF~BJB z=o$eBvQPUaOpAXq7TQ7SUdVWKQZU?m!QSv z3cA*XSckF=Km@SV^3Q=<%iK@kozMF*Oxz9ez!JK1xJ1CDwv9|aM}SHmIe&TcK^%#p z{aQ?tZ!6}EEXP31Z>3}v3WuCAhf6p`aO@%YH!|1k>j8#0qmkt;ycM1f58(Xk7>}pZ ziM7~#bw__MyzzVut*LcC!gy)@ZS;)GjcFn;QsM9Tq8dlW^`_q+nPQ2>pQwe6=flh# z_V$dxub6Qi23Td2US7TqAAb)E^6>(CIVG53XydPva$50x3RYvyUI4GHk}pQHSl<_+ zg2Ue)fCOwv^uPihZ?b<)u1WYA6ym|8#KRu*09}9uV&;nLGGQz5FaF^H3o-~^SqR#| zfe$u?)=we=Q)+Ba&OPupbML`pXx#%#M34&^hXV<~+|rkN-a#(!Du3ueytyWff(10O zjTz)52N`mKi?fHhvq_JJW3{06Qc?a>~Hmrsj)NKSRIWEa;O41dxkwG2&7qQgDe;&E3_&|DGOHJ7OfqwlskrU?G(c+h_AO``Dj*< z@^FHn?HyC%VGFsxFBUc?=pu0KiI>fosuFCzcV$kgUAn`mgqzQ6av|!loXP;UQiYFC zL1xbVht({@=`zMB!Fkp9O}tWv1(B+Gi{w*dx1<{f+8yD>p>C0EQ^;$geG;Ob^b10u zl1oIkB5-q{c0sl|V7EfI`RHrHeHy|Y7KQg@*QjG*n}OLG(QaMT=Ao_$_Gt)qRFmfo zARV}%c5h;p{@4on=0WX%c=Nz+gLDhf*M$2tggYsdBn~nHO^dTw4gvvx4vNBkxR#VW zimkUcHE--zWBE;79nKATJq%c6X;w9t(! zxg2h{EK==HZp|PmaMGMj3WuOs<>j!-xRWms8UjqplS>dN0ko5J5J7()6oh1@ zRwOs3r~#F7IF;3ORH>B%>zGn~{EBs09tr`KCMi@@!-0UHJ3*Y_4tl^vCc?MK>Rl60 zROWgBCM3Y3cf_X90+@M08Alz0`u&HXY6){Tna&DAJ!ClIF(f9kPauO=E+pO}hwN0u zOcAgmSz|#4ncrqVXncAig42H;gxr1c_o!;iS=4P?sZ=tY`1O1FBB~H6Q#|5KC2G(H z;}2`k`-LRJ=cgxvyC_>BSIkOhQmJ72w{{`UXe;;O_=KVsMLrmwjDDr`&ktYkzyA8~ z|GP!M{4aApOy79!r+>XQ|GfX@?fc8&FWx));p*P~cy{~i|FT8nX!C#4%igr_;K^j) zVL>#EABr7g&JzrmgnA5{&2|H&5R0UsPryHcS3l=`RTc|Z+Fic%BiODJ23IwpViT<# zx1jd12P`z-ESI9la;Bo8xp7@?V%3nmMeI?f`lO3Zyjb8$fq(4To!O= zqW)i_$>qp+j<^-3IS7u+=rKes42zCw$D@%9m)>~B(V%C%gUTMy@`&C~=_AShMbUB=+jzu14)|LgNN<2Om2sqRm5 z(!Ro%@(LX53X3oM{r+H2{O_vYKNA1@x6w2FK=blOXLKpCIHSvKKMEiozdU|F0NYYw0GsrnhJShfwoX$+JxwfEq`WG)3aZw z?DP06ZbsB3+@#5&G^RAFS<6O?V=a!gIM(7=i{mF3$9aD_$ltLi_Ml&oa3!6E9}s)v z-L!DLN&xxE#XtLZ`pHX`_Al|0gaLzZyqjt_s|4PmS2e_TD=Ebl#3WO9*9oQpQR zBv8)WH{*Xw@X@emhzeVIH|W>gx%xw`a}|k?s){5`&W6$#i8)pLqFH4Ov5>WkVaSzH z(i_n#*D3bU2(et97$=+>3oJ>i(KYxzpFq2+RPjA)iD5xfRVX&Yl)BdHA`YoQZ-h5@ z`jSyqS;Rqit2I(cZ%2LP3_Ghc@*AlrilD~L+XsIZD1}eNL!8MXHE|9f)`&1M1GmtY zuGQ4TQ)0RZdPvCpdJ;SXUa6u`QTJ-)h~lHJD?t+z)KJR35D_sc$e58l;@6l&&~98# zGY?QFH8t}9cN3_TK~`7SeCeT$y1M4hNv3H*qLSp%GwdZ|V%mfmWndNGz#KL5Js#B- zOa^~?#m%UhE^3wADjw06>TTs9oO@wrUMr<^Cw(gZ1D%RDE)S{?5A@-IK0J7`!-E%F z%Jbl$AlEUbSR3a!reL%z@STFTl``L1jCHYZUF=&I`%Xj9#lCg1Z(Z#BhbZ=aFe}J0 zk96fJF)3F?tVLy^LTE)+L-N>Jz*4s$Qhk4v+7bmFHMA?TquY{&QGj-iwNczsTOJ)* z9`bq3xPo3dwa3`%Zbsi&*82^yyiS3hZ{{}kR-M8Of;bv_kwT(q_`R>~#L*!q!gI*@ z`tJ*=x#qaNUU+Qn42C1&4`a}R43@XbF(cnYFFKeF2)fX_CRXkOdC0xxT0#)r1zLX? zv2>cNxHS}hctI)am@B&_pg5lo$35c$-if+Y@|lRsd2}O3J->DHrXj7|(7cO-V~gX2=^yhdtwz%;|<$$8Rpui`;zwkrD~@jO~I|$@3mY z8S7b8teh1pbNwczUtWVCWGsKLR`{LX z8S9<#cd#=~8EQ4xBw;(%`_|X}b$m@R)xA~PNh)xqFMJ!N9$HDeM=4l7sZ_V&T8KjT zmCq{@M#zpQKK%f0kHgZ!S9~kq!NnCtz>1w7{JU?DYF-YNTPi{)hXmZvtC4@fzO1%O z4rv1QgM0IF|=Peo6P#9HImL{QfONSiG#^! zjaZ9QvY^%c5eHeq87a68*dvAeR=j;FEHg8meXkN~Em!SGyZE-};^Wf5H~-F&i>W2B zE_PTX+8RgGe)yl7A?*IzHjFH*`9AmRdM~N>k~_bbREgtCNdcwF&k-`;3|Ti%R`f)B z46jjkonKf6$ZSxP(H9&78y1uA7c~JYlO-4>0h5zU7=r?vmXpvJDSviQRF?x2OqOr? z>Nk=z;pYYA!=w#!g`G>pN{_QcK;0Azi{rJO3Sse)Wu;2$t%^7~#+GLsaa!vcBIGRm z^$Wtw6*G>ik4InB8ON+3sase$-Uq~vPfv0K1ym?E4W!b=^6FN?UcYAD@^mltgoV^}^K4VZR_bL(0}O?6G5PaaL&-y_E%1l#mgY@U2oKabTsH z7=gm7uToO@ZmF(Bq)5_P6qPC_SvR5+ft*Ohc!4S`qi$YS`pDs+AbljFX!%!5HkN;N z!o>2gEwXTktAA!-&A>a)z{7%Y>T?@eOC;@|X3QG{kk7bqj`srttCV+RkV^PA4z3>S zCNa%t+bgto0CX^?Ilz#|Fj=-vYK)_td$1jQsj_46t27My{eI5~YmU@3+M`krmFBT} z2KGxcU`GYf;TOoHx5#}D`9e2gn>c_XpUCGg5pBpNP=8f}ap;|^z!d7mE|CNlCL~~v zz=lhBMuCM)8@dR%vJFNaSVOXbw*4TazK4kAfwin<;$0I)MZ~wL)C8aq5h4uSLJVTt z19TC9LKg7ElzBqV2RX|8>*LcC-Y|eFI$BY}o3a(UCTn#toUfeg#J*%AT^edXZOLd$X4@ipTo9vvAsGFQ zCF8>y3gtM6BC+f->f!}7(f%>CZ9gYRgr`N`YG(v~PPTg|g>_-jQL^v0(MFk(ROjS$ zB+JsXqiE9j7U)r-aU)Bu8T|wK-@Tmw3;t`=w10%8pDy%Ws>sVqlW7g_PbI*?v}dd_ ziTz4@3!|~`jQQ67VzIKg-vqO$5=gA@K=;R|^+M7bpGK;lcy=)B**NArfuwq5PAy~{ z^$QDL);)a|;FPW~Ei7iIgXLQ2&}l)6hg2IUkik5AO(2<; zKYyuv!#58cLT7sftyi^P)p}LyRjpTdSg#%wl@`_VT+4G`p3e%Bilhj8kC?~@ZYsvb_uH4=qML4nc7U;#)mm0- zS*>ODF3IY{f@C^ha$y2({1sgw$Hpd{Xd{B@lCPml>M34)aFT#FB z5AR*N7S|Ir7wv^Gw=d-jyY5EdmyJxzel7d8?ANk?mt_C2Ahl3Rvyb!^`BJ=vw11C5 z*}i;_b=HkUPhziSxR&8shHDwVOEP>^kX(A!_6tRn`^SL&u;Wrdk<`Ra!{IOet~QR zJtXhTL2a_lQ;@cQ!jtN-E2WYig+A%gYGo(Xik9hGru#B|R+{15Rdz-5tbdAvef#el z)@Jw6d9p=Ol7-$yXmS7S;=Y)N6shGmbayF@y3Ve&_zm5Kmg4hNCrJ#dUU`xf@=tOj zgx;fReXgL-4@)!LIl&*(^%}D_5gRcm4RyKybt^3%!=f7@(t9$k*IvF}84M|c2ucF{G&)GU7zLg*?-2f!KMd;`czQs?tfj>-J{Z)9Fl6= z<^jZ@Y(HW%)>${2If=cF)YK|@CseYQ;aZ0KGJITAlVd{|UZcy++ok(#X(;)3 zzsqmJMx}RFry-VHT%7`2@A~Q-%nRfETw7}>g-1KYdaWJPCLm37|BN#e&HH;L=3>$-x9|E$EnK<=o@@ym z>>wKx)Y)CG;asVm|0oHit!U?JF;h=-YqmX`4rT>uv2nsY!Eo7zWkVoE>^i5^{t3Lo zoQ=3T{q|U9o2Q}XGcCb(9YZ_^RW+^^7+9ON!|iJcEaX*AG1kULF7Oy+-LdS`WY*{L zM{J2QSS8;n7=J>=ri(7!essAEL~_db7N+~6fql|W4}`=c}rDf z8fbe3nS*8-qh$~}eDr^bcDenEzjPiU5`qL|%c(US9Yq_!Vhg}^X@W!%$ zBhEoMPZB^K6fpEYI9&ijL-xMIYy}XZo8=044m6SAb^bx`njp+p$mJY^?))#n9ky*D zDO|*Y{5B^cF}N`E5OiS(TW`Ec(`D#h^bNHx(C( zhwc8&C#|)8`xD~?izs?x&Np)#d#hvI;n}}H;lwzaj7LNHi;tCh(B^#zERUrZrknmE zGCCUcd6$167cVffc-O&P9@`iZW*ixd{$My78-G3H+@-hJLT>!o8Jr_qPS_=bE_>%t zbH%|9`h%YFj#$YDz5qOTv5C%+>%TPmG3dwCwjo0<$3(o4h@>9-vv%p5%OZ%Ovj4}P z@hd`36ty78sGc`0SSuCJQhFup96$N9U-41O9hEm(bsY3RO=B;y(!57&2r( z01pw18>aF-Sj)f)X~zdHj8yie+8fWqOM={wNStjqrNb1Yd@C*0 zsM=0TeNbYmrCK&H*0Ligv)9s?1>OvQ_abFDfPNFOMhsezL9hp0(G=9{ve?LARDm9WQcV zNIn;Pq0S_A3?n2_IBWB!%w>WFtPL29U{nBXW-!|)uXsO%Saw$mpI&=-4&vFUB z%rRSFWLx`hF?-MdP*SMzE=m+?SusD&v}O^IB`uvXN(2x1zC% zo)!9Y)Eo8&!s%XeVE6;8pwXa{zb2-C9F|6UMf`nCH>7D6atG2bKqWbD&38W@cA2FMR&8?b zoIco5`8X<*@Fz+E#*;fJDgvIAvu7xb0s@+rll3Zse?e)&{blF%oC+WoaeT6LOclEq z0PlwXi!rYf2t{alTdLnw#+KhraT(2>XVcNFwCuoTH)WwN%gaJFmA#qN&8F#pz#>x2Q7x zE5^M~lmHgYcV<~*FDh6z_k=;|X<)qJXmeqpn#hz?47uJOj16r1gJP%m_htP!U z4GTMejVv&K01*6vTu;=zh2WT4$ONyX^9>UVn|@aEdSf$e^0#{qG;fd<_QF~BC*gd9 zY2YJowSwMiKPgeViF|CF*}J2XVpN)aA2LJxoU1gbZgQ^DP`8{A877Q%`bY`1NaNQW@A!=1tx!>tV{Nn{z5Z_`e=9AKv^N(aX zPfC+sEkyyelcX(4e}7OKW#nC;MJtZy-&dA}<aMthlW7pZ9o`|hl{7T#LY;rK|_rffG@%yo=s%w)3mil+$s^+aU zk3m-{yz@Qt_N+AG$m7ak(~7$#ga-HVyz-ZrET{s<%Wg_|e?EfNgwMlKlvh&xfS5eS zk=W1$fMAJlQE;3J<`3ZXFlcc3olgN5$g!~r zKRFg;sQXeKf6!y^+)M$*t=I5K7PWa}GJKn?B$HEIhLhT#2rpMb0hl<$Bwm~n%rLai zZDfh=`Lo{%M>>KJUHc&*mYTQu#IRK{H=m`BMU!fk@p-J9Qs(Q2t*0W&WmB2<`U zqNzIpAt&YJX1(Ad1p!+rC9CU#2D+euE@+?&8t8%sf3*u5G*am8%25?rp7n4Dt=p|s z4yfh!L$#|W)!>sSNu8CV{x5*Zf<~9~b#oJ6Y6!V!I@vZV-pIi5cr+OH zD~@P72VmV7#x;{clkYFMF)}Pou=V7Yy_HcSAk>P}NCaV4nhyegSC&J7YL7SriT%1ROsMrAhD*iU(`@>eD>>Bw!F9$h*N=ZQja6bs6!$?L{t8PycM zBCf@??`nB+o~+VNpq#IJveCUWkEd8@~_()hSErD2A6z=hJ?Z_%kVgr^BM0C@B%% zV`8-zlM$5a2;|UKFZ8F3vS(C*izRt()^6}rbB+rK8)865p@jZR-4g%%<{MqgNIs|6sspDG62>iURN)35<{>uSTi?SA0$=6S#^K zF=R!jVO7Us$zIaPg}7w_=fVT03z@Xx*yx%7fvGqz^u)1VxKurW_)b)uBnDlWlz3Pk zA!1_TTWoFk_E|&PppU-w4TK}Lint|3@1LXD}9pL%ETTOlW;YR0WOpMH8cSylQK3)0#3`5d^S6O;-Ea;@Qj)_Eji+* zn-ksUK`2F3;XGO3i#`?mK~BZKpJC{jn6v40R-Srvfh?I-)7qj)LMoD^KWAbH z)$)mw&^wZm8I+$Sto`Tuo~Oa+@DRfOcyBlzPWHy*`CxAjt?}O6>L1J}hx6gk9B(H^ zP-mDt8K)kWXP8`nAWqi5AZW8zc_wiQYmvU8$+oH;ZWTeKtMlm**n+W!M^vZT`LD316c0 zn}XYhH!JblBr8=m@YVRJ>l3|fRX$y_?2{#j)q+oxub&2wLhtQgWO|E2xovM5;p;% zar$}!O52Tm8l_^xFxf3bw(W^zEkZ2>80BM;Zz#AEO+9dNe%xW*Kb`FU^t>=G2r-w$ z@Gm-V7F`~HeO`R*z1d)E|I?>bm`30_69fen5oO>)@{f&xs zf)+FD@DL97rnBi}Z#flN^^??K}PC z2ipoFA57y>%Ik=FRzZnbat|2FD3o^9F@EYY^wJn*XI7sD3 ziR?Omm=t6JNZEMFAZw%F#P=!+E-jSBht&#BG*i}axt%o7aKWgaK*i;vT%qEMzUfZI zeKSN*e?opsCDAiZmxQ|L0(o@fnlZT$d-Bcrh}P$;2M?RjHjah|FF8{#s}lsXgZ#WhnIKIF^&eq*=&5+AIxTdvwrwE+y40clV==F$35eN`0KL)Kb(I8 zgVE@~_>#iKp&sLk@(vS=-Z{aQ`h8z~eMD=@CvDglh`{^ggAeDQJ~3?LuTZYVK(slB zF0^fAV{e`F=)?IZp@82)59Rf6Oo_R1T|~H^e(V{86e_dPY&PvDu?e4bh)}$rG)}{R z6i$Qw!RTN-m<`7XvxZ*jHaDp7WLN8#cq_sZZsSYhQrDDVAxNh*B|u{4u^xu zpg&eZa4#RjX$Hes8htK?;}nL|@pw3%^bg156ov_c?-Il5>|k&>KA4KN$-!{4I}9-0 zK?XS3X$F|>JOdo=I0HQP;+lbAvec@7p_yvf{`AyU2SvOZd;FZb;EB=Gil9?P@ciVS z7XCX%?rF)tQ{?{G3q5DhvK)*|)I#Lgpo-AbD*#o@YAS%8Laqbje|yMvrvO@0eb)-03##9a0_bS% zI@kql54jHZ0NX+?s{n@D>GPwU2ZZSLJ9aj9bsjM6kNboE;dnZk>hpkIVt^NN9`I}o zpn4wgTnrFX3l?P1#8#eG*r{EAR$5Q&6mn^Wu~W!>S1zNSLN2W(b_%()-qP4aZcpg*2X4yLJ%kN>R0T~EGckX91Ui%oVL@toLX9Y@cJP1aNN zoYL zxM+!pCko}4OIp{}EebTpBUCeqPFI-2N3M-x3h`jv$} zv{}bMepC6o!tYq5n8OP#p@h1m(OgDu2P#-JGaM!5L z9Q2}6o;e&!STs3*xa;CEhWfYche4^>&Z>f^3(V#rlz3fdMnt(-mHGJKw+yR|XAn(S z2Tv5eRk}zjsCrwYvFa^Ru|m6wS5?I-<`xrQH*}feImP8juy_t3rWjW7Dz7?7q=icT zZ-mrQ`mE0Ms8oY*_9Q99YLK0ffhz6e;;)pxI;i%aH$Gn=o~tu@cNbaiYR&lR$asAG T^7#J(00960(DJkw9~J`uMQ;Pi delta 11895 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 diff --git a/build/openrpc/worker.json.gz b/build/openrpc/worker.json.gz index 44c537b1ca44deeaf46c3865eb054b2f3a02c806..f56329b0525a4e1f1847fcf9432077f614853e60 100644 GIT binary patch delta 4368 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 `dPPn52N_ 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 KtCCr*E&%{5cx{pZ diff --git a/chain/types/ethtypes/eth_types.go b/chain/types/ethtypes/eth_types.go index 02b0012be..64f67f662 100644 --- a/chain/types/ethtypes/eth_types.go +++ b/chain/types/ethtypes/eth_types.go @@ -238,6 +238,30 @@ func (c *EthCall) UnmarshalJSON(b []byte) error { return nil } +type EthSyncingResult struct { + DoneSync bool + StartingBlock EthUint64 + CurrentBlock EthUint64 + HighestBlock EthUint64 +} + +func (sr EthSyncingResult) MarshalJSON() ([]byte, error) { + if sr.DoneSync { + // when done syncing, the json response should be '"result": false' + return []byte("false"), nil + } + + // need to do an anonymous struct to avoid infinite recursion + return json.Marshal(&struct { + StartingBlock EthUint64 `json:"startingblock"` + CurrentBlock EthUint64 `json:"currentblock"` + HighestBlock EthUint64 `json:"highestblock"` + }{ + StartingBlock: sr.StartingBlock, + CurrentBlock: sr.CurrentBlock, + HighestBlock: sr.HighestBlock}) +} + const ( EthAddressLength = 20 EthHashLength = 32 diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index f0a95d8dc..645df4f9d 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -103,6 +103,7 @@ * [EthProtocolVersion](#EthProtocolVersion) * [EthSendRawTransaction](#EthSendRawTransaction) * [EthSubscribe](#EthSubscribe) + * [EthSyncing](#EthSyncing) * [EthUninstallFilter](#EthUninstallFilter) * [EthUnsubscribe](#EthUnsubscribe) * [Filecoin](#Filecoin) @@ -3071,6 +3072,15 @@ Inputs: Response: `"0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e"` +### EthSyncing + + +Perms: read + +Inputs: `null` + +Response: `false` + ### EthUninstallFilter Uninstalls a filter with given id. diff --git a/gateway/node.go b/gateway/node.go index a88b22860..d0ff53402 100644 --- a/gateway/node.go +++ b/gateway/node.go @@ -115,6 +115,7 @@ type TargetAPI interface { EthGetStorageAt(ctx context.Context, address ethtypes.EthAddress, position ethtypes.EthBytes, blkParam string) (ethtypes.EthBytes, error) EthGetBalance(ctx context.Context, address ethtypes.EthAddress, blkParam string) (ethtypes.EthBigInt, error) EthChainId(ctx context.Context) (ethtypes.EthUint64, error) + EthSyncing(ctx context.Context) (ethtypes.EthSyncingResult, error) NetVersion(ctx context.Context) (string, error) NetListening(ctx context.Context) (bool, error) EthProtocolVersion(ctx context.Context) (ethtypes.EthUint64, error) diff --git a/gateway/proxy_eth.go b/gateway/proxy_eth.go index 3342875c3..b992c9ea9 100644 --- a/gateway/proxy_eth.go +++ b/gateway/proxy_eth.go @@ -252,6 +252,14 @@ func (gw *Node) EthChainId(ctx context.Context) (ethtypes.EthUint64, error) { return gw.target.EthChainId(ctx) } +func (gw *Node) EthSyncing(ctx context.Context) (ethtypes.EthSyncingResult, error) { + if err := gw.limit(ctx, basicRateLimitTokens); err != nil { + return ethtypes.EthSyncingResult{}, err + } + + return gw.target.EthSyncing(ctx) +} + func (gw *Node) NetVersion(ctx context.Context) (string, error) { if err := gw.limit(ctx, stateRateLimitTokens); err != nil { return "", err diff --git a/node/impl/full/dummy.go b/node/impl/full/dummy.go index a4a125d6f..918e84d10 100644 --- a/node/impl/full/dummy.go +++ b/node/impl/full/dummy.go @@ -102,6 +102,10 @@ func (e *EthModuleDummy) EthChainId(ctx context.Context) (ethtypes.EthUint64, er return 0, ErrModuleDisabled } +func (e *EthModuleDummy) EthSyncing(ctx context.Context) (ethtypes.EthSyncingResult, error) { + return ethtypes.EthSyncingResult{}, ErrModuleDisabled +} + func (e *EthModuleDummy) NetVersion(ctx context.Context) (string, error) { return "", ErrModuleDisabled } diff --git a/node/impl/full/eth.go b/node/impl/full/eth.go index 9bc525737..a26241cd7 100644 --- a/node/impl/full/eth.go +++ b/node/impl/full/eth.go @@ -67,6 +67,7 @@ type EthModuleAPI interface { EthGetBalance(ctx context.Context, address ethtypes.EthAddress, blkParam string) (ethtypes.EthBigInt, error) EthFeeHistory(ctx context.Context, p jsonrpc.RawParams) (ethtypes.EthFeeHistory, error) EthChainId(ctx context.Context) (ethtypes.EthUint64, error) + EthSyncing(ctx context.Context) (ethtypes.EthSyncingResult, error) NetVersion(ctx context.Context) (string, error) NetListening(ctx context.Context) (bool, error) EthProtocolVersion(ctx context.Context) (ethtypes.EthUint64, error) @@ -133,6 +134,7 @@ type EthModule struct { ChainAPI MpoolAPI StateAPI + SyncAPI } var _ EthModuleAPI = (*EthModule)(nil) @@ -673,6 +675,42 @@ func (a *EthModule) EthChainId(ctx context.Context) (ethtypes.EthUint64, error) return ethtypes.EthUint64(build.Eip155ChainId), nil } +func (a *EthModule) EthSyncing(ctx context.Context) (ethtypes.EthSyncingResult, error) { + state, err := a.SyncAPI.SyncState(ctx) + if err != nil { + return ethtypes.EthSyncingResult{}, fmt.Errorf("failed calling SyncState: %w", err) + } + + if len(state.ActiveSyncs) == 0 { + return ethtypes.EthSyncingResult{}, errors.New("no active syncs, try again") + } + + working := -1 + for i, ss := range state.ActiveSyncs { + if ss.Stage == api.StageIdle { + continue + } + working = i + } + if working == -1 { + working = len(state.ActiveSyncs) - 1 + } + + ss := state.ActiveSyncs[working] + if ss.Base == nil || ss.Target == nil { + return ethtypes.EthSyncingResult{}, errors.New("missing syncing information, try again") + } + + res := ethtypes.EthSyncingResult{ + DoneSync: ss.Stage == api.StageSyncComplete, + CurrentBlock: ethtypes.EthUint64(ss.Height), + StartingBlock: ethtypes.EthUint64(ss.Base.Height()), + HighestBlock: ethtypes.EthUint64(ss.Target.Height()), + } + + return res, nil +} + func (a *EthModule) EthFeeHistory(ctx context.Context, p jsonrpc.RawParams) (ethtypes.EthFeeHistory, error) { params, err := jsonrpc.DecodeParams[ethtypes.EthFeeHistoryParams](p) if err != nil { diff --git a/node/modules/ethmodule.go b/node/modules/ethmodule.go index 074e911e2..f7f4508c4 100644 --- a/node/modules/ethmodule.go +++ b/node/modules/ethmodule.go @@ -18,8 +18,8 @@ import ( "github.com/filecoin-project/lotus/node/repo" ) -func EthModuleAPI(cfg config.FevmConfig) func(helpers.MetricsCtx, repo.LockedRepo, fx.Lifecycle, *store.ChainStore, *stmgr.StateManager, EventAPI, *messagepool.MessagePool, full.StateAPI, full.ChainAPI, full.MpoolAPI) (*full.EthModule, error) { - return func(mctx helpers.MetricsCtx, r repo.LockedRepo, lc fx.Lifecycle, cs *store.ChainStore, sm *stmgr.StateManager, evapi EventAPI, mp *messagepool.MessagePool, stateapi full.StateAPI, chainapi full.ChainAPI, mpoolapi full.MpoolAPI) (*full.EthModule, error) { +func EthModuleAPI(cfg config.FevmConfig) func(helpers.MetricsCtx, repo.LockedRepo, fx.Lifecycle, *store.ChainStore, *stmgr.StateManager, EventAPI, *messagepool.MessagePool, full.StateAPI, full.ChainAPI, full.MpoolAPI, full.SyncAPI) (*full.EthModule, error) { + return func(mctx helpers.MetricsCtx, r repo.LockedRepo, lc fx.Lifecycle, cs *store.ChainStore, sm *stmgr.StateManager, evapi EventAPI, mp *messagepool.MessagePool, stateapi full.StateAPI, chainapi full.ChainAPI, mpoolapi full.MpoolAPI, syncapi full.SyncAPI) (*full.EthModule, error) { sqlitePath, err := r.SqlitePath() if err != nil { return nil, err @@ -84,6 +84,7 @@ func EthModuleAPI(cfg config.FevmConfig) func(helpers.MetricsCtx, repo.LockedRep ChainAPI: chainapi, MpoolAPI: mpoolapi, StateAPI: stateapi, + SyncAPI: syncapi, EthTxHashManager: ðTxHashManager, }, nil