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