You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

320 lines
20 KiB

Allow serving API only via new cli command - Add new command to the cli/node: `serveapi` that alows serving the API just by connecting to the PostgreSQL database. The mode flag should me passed in order to select whether we are connecting to a synchronizer database or a coordinator database. If `coord` is chosen as mode, the coordinator endpoints can be activated in order to allow inserting l2txs and authorizations into the L2DB. Summary of the implementation details - New SQL table with 3 columns (plus `item_id` pk). The table only contains a single row with `item_id` = 1. Columns: - state: historydb.StateAPI in JSON. This is the struct that is served via the `/state` API endpoint. The node will periodically update this struct and store it int he DB. The api server will query it from the DB to serve it. - config: historydb.NodeConfig in JSON. This struct contains node configuration parameters that the API needs to be aware of. It's updated once every time the node starts. - constants: historydb.Constants in JSON. This struct contains all the hermez network constants gathered via the ethereum client by the node. It's written once every time the node starts. - The HistoryDB contains methods to get and update each one of these columns individually. - The HistoryDB contains all methods that query the DB and prepare objects that will appear in the StateAPI endpoint. - The configuration used in for the `serveapi` cli/node command is defined in `config.APIServer`, and is a subset of `node.Config` in order to allow reusing the same configuration file of the node if desired. - A new object is introduced in the api: `StateAPIUpdater`, which contains all the necessary information to update the StateAPI in the DB periodically by the node. - Moved the types `SCConsts`, `SCVariables` and `SCVariablesPtr` from `syncrhonizer` to `common` for convenience.
3 years ago
  1. package common
  2. import (
  3. "fmt"
  4. "math"
  5. "math/big"
  6. "github.com/hermeznetwork/tracerr"
  7. )
  8. // MaxFeePlan is the maximum value of the FeePlan
  9. const MaxFeePlan = 256
  10. // FeePlan represents the fee model, a position in the array indicates the
  11. // percentage of tokens paid in concept of fee for a transaction
  12. var FeePlan = [MaxFeePlan]float64{}
  13. // FeeFactorLsh60 is the feeFactor << 60
  14. var FeeFactorLsh60 [256]*big.Int
  15. // RecommendedFee is the recommended fee to pay in USD per transaction set by
  16. // the coordinator according to the tx type (if the tx requires to create an
  17. // account and register, only register or he account already esists)
  18. type RecommendedFee struct {
  19. ExistingAccount float64 `json:"existingAccount"`
  20. CreatesAccount float64 `json:"createAccount"`
  21. CreatesAccountInternal float64 `json:"createAccountInternal"`
  22. }
  23. // FeeSelector is used to select a percentage from the FeePlan.
  24. type FeeSelector uint8
  25. // Percentage returns the associated percentage of the FeeSelector
  26. func (f FeeSelector) Percentage() float64 {
  27. if f == 0 {
  28. return 0
  29. } else if f < 32 { //nolint:gomnd
  30. return math.Pow(2, -60.0+float64(f)*(-8.0-(-60.0))/32.0) //nolint:gomnd
  31. } else if f < 192 { //nolint:gomnd
  32. return math.Pow(2, -8.0+(float64(f)-32.0)*(0.0-(-8.0))/160.0) //nolint:gomnd
  33. } else {
  34. return math.Pow(2, (float64(f) - 192.0)) //nolint:gomnd
  35. }
  36. }
  37. // CalcFeeAmount calculates the fee amount in tokens from an amount and
  38. // feeSelector (fee index).
  39. func CalcFeeAmount(amount *big.Int, feeSel FeeSelector) (*big.Int, error) {
  40. feeAmount := new(big.Int).Mul(amount, FeeFactorLsh60[int(feeSel)])
  41. if feeSel < 192 { //nolint:gomnd
  42. feeAmount.Rsh(feeAmount, 60)
  43. }
  44. if feeAmount.BitLen() > 128 { //nolint:gomnd
  45. return nil, tracerr.Wrap(fmt.Errorf("FeeAmount overflow (feeAmount doesn't fit in 128 bits)"))
  46. }
  47. return feeAmount, nil
  48. }
  49. func init() {
  50. setFeeFactorLsh60(&FeeFactorLsh60)
  51. }
  52. func setFeeFactorLsh60(feeFactorLsh60 *[256]*big.Int) {
  53. feeFactorLsh60[0], _ = new(big.Int).SetString("0", 10)
  54. feeFactorLsh60[1], _ = new(big.Int).SetString("3", 10)
  55. feeFactorLsh60[2], _ = new(big.Int).SetString("9", 10)
  56. feeFactorLsh60[3], _ = new(big.Int).SetString("29", 10)
  57. feeFactorLsh60[4], _ = new(big.Int).SetString("90", 10)
  58. feeFactorLsh60[5], _ = new(big.Int).SetString("279", 10)
  59. feeFactorLsh60[6], _ = new(big.Int).SetString("861", 10)
  60. feeFactorLsh60[7], _ = new(big.Int).SetString("2655", 10)
  61. feeFactorLsh60[8], _ = new(big.Int).SetString("8192", 10)
  62. feeFactorLsh60[9], _ = new(big.Int).SetString("25267", 10)
  63. feeFactorLsh60[10], _ = new(big.Int).SetString("77935", 10)
  64. feeFactorLsh60[11], _ = new(big.Int).SetString("240387", 10)
  65. feeFactorLsh60[12], _ = new(big.Int).SetString("741455", 10)
  66. feeFactorLsh60[13], _ = new(big.Int).SetString("2286960", 10)
  67. feeFactorLsh60[14], _ = new(big.Int).SetString("7053950", 10)
  68. feeFactorLsh60[15], _ = new(big.Int).SetString("21757357", 10)
  69. feeFactorLsh60[16], _ = new(big.Int).SetString("67108864", 10)
  70. feeFactorLsh60[17], _ = new(big.Int).SetString("206992033", 10)
  71. feeFactorLsh60[18], _ = new(big.Int).SetString("638450708", 10)
  72. feeFactorLsh60[19], _ = new(big.Int).SetString("1969251187", 10)
  73. feeFactorLsh60[20], _ = new(big.Int).SetString("6074000999", 10)
  74. feeFactorLsh60[21], _ = new(big.Int).SetString("18734780191", 10)
  75. feeFactorLsh60[22], _ = new(big.Int).SetString("57785961645", 10)
  76. feeFactorLsh60[23], _ = new(big.Int).SetString("178236271212", 10)
  77. feeFactorLsh60[24], _ = new(big.Int).SetString("549755813888", 10)
  78. feeFactorLsh60[25], _ = new(big.Int).SetString("1695678735018", 10)
  79. feeFactorLsh60[26], _ = new(big.Int).SetString("5230188203117", 10)
  80. feeFactorLsh60[27], _ = new(big.Int).SetString("16132105731538", 10)
  81. feeFactorLsh60[28], _ = new(big.Int).SetString("49758216191607", 10)
  82. feeFactorLsh60[29], _ = new(big.Int).SetString("153475319327371", 10)
  83. feeFactorLsh60[30], _ = new(big.Int).SetString("473382597799226", 10)
  84. feeFactorLsh60[31], _ = new(big.Int).SetString("1460111533771401", 10)
  85. feeFactorLsh60[32], _ = new(big.Int).SetString("4503599627370496", 10)
  86. feeFactorLsh60[33], _ = new(big.Int).SetString("4662418725241772", 10)
  87. feeFactorLsh60[34], _ = new(big.Int).SetString("4826838566504035", 10)
  88. feeFactorLsh60[35], _ = new(big.Int).SetString("4997056660946426", 10)
  89. feeFactorLsh60[36], _ = new(big.Int).SetString("5173277483525749", 10)
  90. feeFactorLsh60[37], _ = new(big.Int).SetString("5355712719992597", 10)
  91. feeFactorLsh60[38], _ = new(big.Int).SetString("5544581521179432", 10)
  92. feeFactorLsh60[39], _ = new(big.Int).SetString("5740110766256133", 10)
  93. feeFactorLsh60[40], _ = new(big.Int).SetString("5942535335269230", 10)
  94. feeFactorLsh60[41], _ = new(big.Int).SetString("6152098391292193", 10)
  95. feeFactorLsh60[42], _ = new(big.Int).SetString("6369051672525772", 10)
  96. feeFactorLsh60[43], _ = new(big.Int).SetString("6593655794699191", 10)
  97. feeFactorLsh60[44], _ = new(big.Int).SetString("6826180564135515", 10)
  98. feeFactorLsh60[45], _ = new(big.Int).SetString("7066905301857248", 10)
  99. feeFactorLsh60[46], _ = new(big.Int).SetString("7316119179121470", 10)
  100. feeFactorLsh60[47], _ = new(big.Int).SetString("7574121564787630", 10)
  101. feeFactorLsh60[48], _ = new(big.Int).SetString("7841222384935199", 10)
  102. feeFactorLsh60[49], _ = new(big.Int).SetString("8117742495163242", 10)
  103. feeFactorLsh60[50], _ = new(big.Int).SetString("8404014066019092", 10)
  104. feeFactorLsh60[51], _ = new(big.Int).SetString("8700380982019120", 10)
  105. feeFactorLsh60[52], _ = new(big.Int).SetString("9007199254740992", 10)
  106. feeFactorLsh60[53], _ = new(big.Int).SetString("9324837450483544", 10)
  107. feeFactorLsh60[54], _ = new(big.Int).SetString("9653677133008070", 10)
  108. feeFactorLsh60[55], _ = new(big.Int).SetString("9994113321892852", 10)
  109. feeFactorLsh60[56], _ = new(big.Int).SetString("10346554967051498", 10)
  110. feeFactorLsh60[57], _ = new(big.Int).SetString("10711425439985194", 10)
  111. feeFactorLsh60[58], _ = new(big.Int).SetString("11089163042358864", 10)
  112. feeFactorLsh60[59], _ = new(big.Int).SetString("11480221532512266", 10)
  113. feeFactorLsh60[60], _ = new(big.Int).SetString("11885070670538460", 10)
  114. feeFactorLsh60[61], _ = new(big.Int).SetString("12304196782584386", 10)
  115. feeFactorLsh60[62], _ = new(big.Int).SetString("12738103345051544", 10)
  116. feeFactorLsh60[63], _ = new(big.Int).SetString("13187311589398382", 10)
  117. feeFactorLsh60[64], _ = new(big.Int).SetString("13652361128271030", 10)
  118. feeFactorLsh60[65], _ = new(big.Int).SetString("14133810603714496", 10)
  119. feeFactorLsh60[66], _ = new(big.Int).SetString("14632238358242940", 10)
  120. feeFactorLsh60[67], _ = new(big.Int).SetString("15148243129575260", 10)
  121. feeFactorLsh60[68], _ = new(big.Int).SetString("15682444769870398", 10)
  122. feeFactorLsh60[69], _ = new(big.Int).SetString("16235484990326484", 10)
  123. feeFactorLsh60[70], _ = new(big.Int).SetString("16808028132038184", 10)
  124. feeFactorLsh60[71], _ = new(big.Int).SetString("17400761964038240", 10)
  125. feeFactorLsh60[72], _ = new(big.Int).SetString("18014398509481984", 10)
  126. feeFactorLsh60[73], _ = new(big.Int).SetString("18649674900967100", 10)
  127. feeFactorLsh60[74], _ = new(big.Int).SetString("19307354266016140", 10)
  128. feeFactorLsh60[75], _ = new(big.Int).SetString("19988226643785704", 10)
  129. feeFactorLsh60[76], _ = new(big.Int).SetString("20693109934102996", 10)
  130. feeFactorLsh60[77], _ = new(big.Int).SetString("21422850879970388", 10)
  131. feeFactorLsh60[78], _ = new(big.Int).SetString("22178326084717744", 10)
  132. feeFactorLsh60[79], _ = new(big.Int).SetString("22960443065024532", 10)
  133. feeFactorLsh60[80], _ = new(big.Int).SetString("23770141341076920", 10)
  134. feeFactorLsh60[81], _ = new(big.Int).SetString("24608393565168772", 10)
  135. feeFactorLsh60[82], _ = new(big.Int).SetString("25476206690103088", 10)
  136. feeFactorLsh60[83], _ = new(big.Int).SetString("26374623178796784", 10)
  137. feeFactorLsh60[84], _ = new(big.Int).SetString("27304722256542060", 10)
  138. feeFactorLsh60[85], _ = new(big.Int).SetString("28267621207428992", 10)
  139. feeFactorLsh60[86], _ = new(big.Int).SetString("29264476716485880", 10)
  140. feeFactorLsh60[87], _ = new(big.Int).SetString("30296486259150520", 10)
  141. feeFactorLsh60[88], _ = new(big.Int).SetString("31364889539740816", 10)
  142. feeFactorLsh60[89], _ = new(big.Int).SetString("32470969980652968", 10)
  143. feeFactorLsh60[90], _ = new(big.Int).SetString("33616056264076368", 10)
  144. feeFactorLsh60[91], _ = new(big.Int).SetString("34801523928076480", 10)
  145. feeFactorLsh60[92], _ = new(big.Int).SetString("36028797018963968", 10)
  146. feeFactorLsh60[93], _ = new(big.Int).SetString("37299349801934200", 10)
  147. feeFactorLsh60[94], _ = new(big.Int).SetString("38614708532032280", 10)
  148. feeFactorLsh60[95], _ = new(big.Int).SetString("39976453287571408", 10)
  149. feeFactorLsh60[96], _ = new(big.Int).SetString("41386219868205992", 10)
  150. feeFactorLsh60[97], _ = new(big.Int).SetString("42845701759940776", 10)
  151. feeFactorLsh60[98], _ = new(big.Int).SetString("44356652169435488", 10)
  152. feeFactorLsh60[99], _ = new(big.Int).SetString("45920886130049064", 10)
  153. feeFactorLsh60[100], _ = new(big.Int).SetString("47540282682153840", 10)
  154. feeFactorLsh60[101], _ = new(big.Int).SetString("49216787130337544", 10)
  155. feeFactorLsh60[102], _ = new(big.Int).SetString("50952413380206176", 10)
  156. feeFactorLsh60[103], _ = new(big.Int).SetString("52749246357593568", 10)
  157. feeFactorLsh60[104], _ = new(big.Int).SetString("54609444513084120", 10)
  158. feeFactorLsh60[105], _ = new(big.Int).SetString("56535242414857984", 10)
  159. feeFactorLsh60[106], _ = new(big.Int).SetString("58528953432971760", 10)
  160. feeFactorLsh60[107], _ = new(big.Int).SetString("60592972518301040", 10)
  161. feeFactorLsh60[108], _ = new(big.Int).SetString("62729779079481632", 10)
  162. feeFactorLsh60[109], _ = new(big.Int).SetString("64941939961305936", 10)
  163. feeFactorLsh60[110], _ = new(big.Int).SetString("67232112528152736", 10)
  164. feeFactorLsh60[111], _ = new(big.Int).SetString("69603047856152960", 10)
  165. feeFactorLsh60[112], _ = new(big.Int).SetString("72057594037927936", 10)
  166. feeFactorLsh60[113], _ = new(big.Int).SetString("74598699603868352", 10)
  167. feeFactorLsh60[114], _ = new(big.Int).SetString("77229417064064608", 10)
  168. feeFactorLsh60[115], _ = new(big.Int).SetString("79952906575142816", 10)
  169. feeFactorLsh60[116], _ = new(big.Int).SetString("82772439736411984", 10)
  170. feeFactorLsh60[117], _ = new(big.Int).SetString("85691403519881552", 10)
  171. feeFactorLsh60[118], _ = new(big.Int).SetString("88713304338870912", 10)
  172. feeFactorLsh60[119], _ = new(big.Int).SetString("91841772260098192", 10)
  173. feeFactorLsh60[120], _ = new(big.Int).SetString("95080565364307680", 10)
  174. feeFactorLsh60[121], _ = new(big.Int).SetString("98433574260675088", 10)
  175. feeFactorLsh60[122], _ = new(big.Int).SetString("101904826760412352", 10)
  176. feeFactorLsh60[123], _ = new(big.Int).SetString("105498492715187056", 10)
  177. feeFactorLsh60[124], _ = new(big.Int).SetString("109218889026168304", 10)
  178. feeFactorLsh60[125], _ = new(big.Int).SetString("113070484829715968", 10)
  179. feeFactorLsh60[126], _ = new(big.Int).SetString("117057906865943520", 10)
  180. feeFactorLsh60[127], _ = new(big.Int).SetString("121185945036602080", 10)
  181. feeFactorLsh60[128], _ = new(big.Int).SetString("125459558158963264", 10)
  182. feeFactorLsh60[129], _ = new(big.Int).SetString("129883879922611968", 10)
  183. feeFactorLsh60[130], _ = new(big.Int).SetString("134464225056305472", 10)
  184. feeFactorLsh60[131], _ = new(big.Int).SetString("139206095712305920", 10)
  185. feeFactorLsh60[132], _ = new(big.Int).SetString("144115188075855872", 10)
  186. feeFactorLsh60[133], _ = new(big.Int).SetString("149197399207736800", 10)
  187. feeFactorLsh60[134], _ = new(big.Int).SetString("154458834128129216", 10)
  188. feeFactorLsh60[135], _ = new(big.Int).SetString("159905813150285632", 10)
  189. feeFactorLsh60[136], _ = new(big.Int).SetString("165544879472823968", 10)
  190. feeFactorLsh60[137], _ = new(big.Int).SetString("171382807039763104", 10)
  191. feeFactorLsh60[138], _ = new(big.Int).SetString("177426608677741952", 10)
  192. feeFactorLsh60[139], _ = new(big.Int).SetString("183683544520196384", 10)
  193. feeFactorLsh60[140], _ = new(big.Int).SetString("190161130728615360", 10)
  194. feeFactorLsh60[141], _ = new(big.Int).SetString("196867148521350176", 10)
  195. feeFactorLsh60[142], _ = new(big.Int).SetString("203809653520824704", 10)
  196. feeFactorLsh60[143], _ = new(big.Int).SetString("210996985430374272", 10)
  197. feeFactorLsh60[144], _ = new(big.Int).SetString("218437778052336608", 10)
  198. feeFactorLsh60[145], _ = new(big.Int).SetString("226140969659431936", 10)
  199. feeFactorLsh60[146], _ = new(big.Int).SetString("234115813731887040", 10)
  200. feeFactorLsh60[147], _ = new(big.Int).SetString("242371890073204160", 10)
  201. feeFactorLsh60[148], _ = new(big.Int).SetString("250919116317926528", 10)
  202. feeFactorLsh60[149], _ = new(big.Int).SetString("259767759845223936", 10)
  203. feeFactorLsh60[150], _ = new(big.Int).SetString("268928450112610944", 10)
  204. feeFactorLsh60[151], _ = new(big.Int).SetString("278412191424611840", 10)
  205. feeFactorLsh60[152], _ = new(big.Int).SetString("288230376151711744", 10)
  206. feeFactorLsh60[153], _ = new(big.Int).SetString("298394798415473600", 10)
  207. feeFactorLsh60[154], _ = new(big.Int).SetString("308917668256258432", 10)
  208. feeFactorLsh60[155], _ = new(big.Int).SetString("319811626300571264", 10)
  209. feeFactorLsh60[156], _ = new(big.Int).SetString("331089758945647936", 10)
  210. feeFactorLsh60[157], _ = new(big.Int).SetString("342765614079526208", 10)
  211. feeFactorLsh60[158], _ = new(big.Int).SetString("354853217355483904", 10)
  212. feeFactorLsh60[159], _ = new(big.Int).SetString("367367089040392768", 10)
  213. feeFactorLsh60[160], _ = new(big.Int).SetString("380322261457230720", 10)
  214. feeFactorLsh60[161], _ = new(big.Int).SetString("393734297042700352", 10)
  215. feeFactorLsh60[162], _ = new(big.Int).SetString("407619307041649408", 10)
  216. feeFactorLsh60[163], _ = new(big.Int).SetString("421993970860748544", 10)
  217. feeFactorLsh60[164], _ = new(big.Int).SetString("436875556104673216", 10)
  218. feeFactorLsh60[165], _ = new(big.Int).SetString("452281939318863872", 10)
  219. feeFactorLsh60[166], _ = new(big.Int).SetString("468231627463774080", 10)
  220. feeFactorLsh60[167], _ = new(big.Int).SetString("484743780146408320", 10)
  221. feeFactorLsh60[168], _ = new(big.Int).SetString("501838232635853056", 10)
  222. feeFactorLsh60[169], _ = new(big.Int).SetString("519535519690447872", 10)
  223. feeFactorLsh60[170], _ = new(big.Int).SetString("537856900225221888", 10)
  224. feeFactorLsh60[171], _ = new(big.Int).SetString("556824382849223680", 10)
  225. feeFactorLsh60[172], _ = new(big.Int).SetString("576460752303423488", 10)
  226. feeFactorLsh60[173], _ = new(big.Int).SetString("596789596830947200", 10)
  227. feeFactorLsh60[174], _ = new(big.Int).SetString("617835336512516864", 10)
  228. feeFactorLsh60[175], _ = new(big.Int).SetString("639623252601142528", 10)
  229. feeFactorLsh60[176], _ = new(big.Int).SetString("662179517891295872", 10)
  230. feeFactorLsh60[177], _ = new(big.Int).SetString("685531228159052416", 10)
  231. feeFactorLsh60[178], _ = new(big.Int).SetString("709706434710967808", 10)
  232. feeFactorLsh60[179], _ = new(big.Int).SetString("734734178080785536", 10)
  233. feeFactorLsh60[180], _ = new(big.Int).SetString("760644522914461440", 10)
  234. feeFactorLsh60[181], _ = new(big.Int).SetString("787468594085400704", 10)
  235. feeFactorLsh60[182], _ = new(big.Int).SetString("815238614083298816", 10)
  236. feeFactorLsh60[183], _ = new(big.Int).SetString("843987941721497088", 10)
  237. feeFactorLsh60[184], _ = new(big.Int).SetString("873751112209346432", 10)
  238. feeFactorLsh60[185], _ = new(big.Int).SetString("904563878637727744", 10)
  239. feeFactorLsh60[186], _ = new(big.Int).SetString("936463254927548160", 10)
  240. feeFactorLsh60[187], _ = new(big.Int).SetString("969487560292816640", 10)
  241. feeFactorLsh60[188], _ = new(big.Int).SetString("1003676465271706112", 10)
  242. feeFactorLsh60[189], _ = new(big.Int).SetString("1039071039380895744", 10)
  243. feeFactorLsh60[190], _ = new(big.Int).SetString("1075713800450443776", 10)
  244. feeFactorLsh60[191], _ = new(big.Int).SetString("1113648765698447360", 10)
  245. feeFactorLsh60[192], _ = new(big.Int).SetString("1", 10)
  246. feeFactorLsh60[193], _ = new(big.Int).SetString("2", 10)
  247. feeFactorLsh60[194], _ = new(big.Int).SetString("4", 10)
  248. feeFactorLsh60[195], _ = new(big.Int).SetString("8", 10)
  249. feeFactorLsh60[196], _ = new(big.Int).SetString("16", 10)
  250. feeFactorLsh60[197], _ = new(big.Int).SetString("32", 10)
  251. feeFactorLsh60[198], _ = new(big.Int).SetString("64", 10)
  252. feeFactorLsh60[199], _ = new(big.Int).SetString("128", 10)
  253. feeFactorLsh60[200], _ = new(big.Int).SetString("256", 10)
  254. feeFactorLsh60[201], _ = new(big.Int).SetString("512", 10)
  255. feeFactorLsh60[202], _ = new(big.Int).SetString("1024", 10)
  256. feeFactorLsh60[203], _ = new(big.Int).SetString("2048", 10)
  257. feeFactorLsh60[204], _ = new(big.Int).SetString("4096", 10)
  258. feeFactorLsh60[205], _ = new(big.Int).SetString("8192", 10)
  259. feeFactorLsh60[206], _ = new(big.Int).SetString("16384", 10)
  260. feeFactorLsh60[207], _ = new(big.Int).SetString("32768", 10)
  261. feeFactorLsh60[208], _ = new(big.Int).SetString("65536", 10)
  262. feeFactorLsh60[209], _ = new(big.Int).SetString("131072", 10)
  263. feeFactorLsh60[210], _ = new(big.Int).SetString("262144", 10)
  264. feeFactorLsh60[211], _ = new(big.Int).SetString("524288", 10)
  265. feeFactorLsh60[212], _ = new(big.Int).SetString("1048576", 10)
  266. feeFactorLsh60[213], _ = new(big.Int).SetString("2097152", 10)
  267. feeFactorLsh60[214], _ = new(big.Int).SetString("4194304", 10)
  268. feeFactorLsh60[215], _ = new(big.Int).SetString("8388608", 10)
  269. feeFactorLsh60[216], _ = new(big.Int).SetString("16777216", 10)
  270. feeFactorLsh60[217], _ = new(big.Int).SetString("33554432", 10)
  271. feeFactorLsh60[218], _ = new(big.Int).SetString("67108864", 10)
  272. feeFactorLsh60[219], _ = new(big.Int).SetString("134217728", 10)
  273. feeFactorLsh60[220], _ = new(big.Int).SetString("268435456", 10)
  274. feeFactorLsh60[221], _ = new(big.Int).SetString("536870912", 10)
  275. feeFactorLsh60[222], _ = new(big.Int).SetString("1073741824", 10)
  276. feeFactorLsh60[223], _ = new(big.Int).SetString("2147483648", 10)
  277. feeFactorLsh60[224], _ = new(big.Int).SetString("4294967296", 10)
  278. feeFactorLsh60[225], _ = new(big.Int).SetString("8589934592", 10)
  279. feeFactorLsh60[226], _ = new(big.Int).SetString("17179869184", 10)
  280. feeFactorLsh60[227], _ = new(big.Int).SetString("34359738368", 10)
  281. feeFactorLsh60[228], _ = new(big.Int).SetString("68719476736", 10)
  282. feeFactorLsh60[229], _ = new(big.Int).SetString("137438953472", 10)
  283. feeFactorLsh60[230], _ = new(big.Int).SetString("274877906944", 10)
  284. feeFactorLsh60[231], _ = new(big.Int).SetString("549755813888", 10)
  285. feeFactorLsh60[232], _ = new(big.Int).SetString("1099511627776", 10)
  286. feeFactorLsh60[233], _ = new(big.Int).SetString("2199023255552", 10)
  287. feeFactorLsh60[234], _ = new(big.Int).SetString("4398046511104", 10)
  288. feeFactorLsh60[235], _ = new(big.Int).SetString("8796093022208", 10)
  289. feeFactorLsh60[236], _ = new(big.Int).SetString("17592186044416", 10)
  290. feeFactorLsh60[237], _ = new(big.Int).SetString("35184372088832", 10)
  291. feeFactorLsh60[238], _ = new(big.Int).SetString("70368744177664", 10)
  292. feeFactorLsh60[239], _ = new(big.Int).SetString("140737488355328", 10)
  293. feeFactorLsh60[240], _ = new(big.Int).SetString("281474976710656", 10)
  294. feeFactorLsh60[241], _ = new(big.Int).SetString("562949953421312", 10)
  295. feeFactorLsh60[242], _ = new(big.Int).SetString("1125899906842624", 10)
  296. feeFactorLsh60[243], _ = new(big.Int).SetString("2251799813685248", 10)
  297. feeFactorLsh60[244], _ = new(big.Int).SetString("4503599627370496", 10)
  298. feeFactorLsh60[245], _ = new(big.Int).SetString("9007199254740992", 10)
  299. feeFactorLsh60[246], _ = new(big.Int).SetString("18014398509481984", 10)
  300. feeFactorLsh60[247], _ = new(big.Int).SetString("36028797018963968", 10)
  301. feeFactorLsh60[248], _ = new(big.Int).SetString("72057594037927936", 10)
  302. feeFactorLsh60[249], _ = new(big.Int).SetString("144115188075855872", 10)
  303. feeFactorLsh60[250], _ = new(big.Int).SetString("288230376151711744", 10)
  304. feeFactorLsh60[251], _ = new(big.Int).SetString("576460752303423488", 10)
  305. feeFactorLsh60[252], _ = new(big.Int).SetString("1152921504606846976", 10)
  306. feeFactorLsh60[253], _ = new(big.Int).SetString("2305843009213693952", 10)
  307. feeFactorLsh60[254], _ = new(big.Int).SetString("4611686018427387904", 10)
  308. feeFactorLsh60[255], _ = new(big.Int).SetString("9223372036854775808", 10)
  309. }