Dette minner meg om de gamle mempool-dagene på Ethereum da vi måtte gjøre veldig lik XOR calldata-obfuskering for å hindre konkurrenter i å anbude på nytt, haha Morsomt å se at det faktisk fortsatt finnes et Ville Vesten i Solanaland.
Michael Morrell
Michael Morrell4. des., 10:08
Obfuskering av HumidiFi-instruksjonsinstruksjoner: - In-place XOR-basert strømchiffer. - Symmetrisk (f(f(x)) = x) og opererer på 64-bits chunks. Algoritme: - Behandle data i 8-byte (u64) biter. - For hver chunk: -- XOR med statisk 'HUMIDIFI_IX_DATA_KEY': [58, 255, 47, 255, 226, 186, 235, 195, 123, 131, 245, 8, 11, 233, 132, 219, 225, 40, 79, 119, 169, 121, 169, 58, 197, 1, 122, 9, 216, 164, 149, 97][0..7]; -- XOR med rullende 'pos_mask' (starter på 0, øker med 0x0001_0001_0001_0001 per chunk). - Resthåndtering (hvis len % 8 != 0): - Null-pad gjenværende byte til 64 biter. - Bruk de samme XOR-ene (nøkkel + strøm pos_mask). - Kopier gyldige bytes tilbake til den opprinnelige slicen. Inndataoppsett (etter deobfuskering): - Bytes 0-7: 'swap_id' (u64) - Bytes 8-15: 'amount_in' (u64) - Byte 16: 'is_base_to_quote' (u8) - Bytes 17-23: utfylling - Byte 24: Selector (poppet før deserialisering)
Hvis du lurer på «hvorfor kode calldata når du kan simme», er svaret enkelt: sims er dyre i beregningstid, men budgivning har lav latens, noe som betyr at hvis du simulerer + tilbyr på nytt, vil opprinnelsesleverandøren allerede ha sendt flere nyere behandlinger når du byr på nytt. Dette betyr at du må ha en måte å umiddelbart gjenkjenne konkurrentenes parametere som du kan basere ditt nye bud på. Dette er grunnen til at du parser calldata i stedet for å gjøre simuleringer. Og når alle gjør dette, må du ligge ett skritt foran og kode calldata på en måte som er umulig å dekode uten manuell reversering.
Sjelden teknisk kommentar.
4,33K