More

Examples

Real output from the repository scripts.

Real chain check

chaine 4663, bloc 84176731
courbe Pons vivante 0xF04F72EaE8cc3f751830Baf20713Bb877E010131

NOMINAL : 8 wallets, une seule liste d autorisations EIP-7702, 8 achats sur une vraie courbe
  bras 1  ok   jetons recus 570782.26818  ETH restant 0.009
  bras 2  ok   jetons recus 570130.87264  ETH restant 0.009
  bras 3  ok   jetons recus 569480.59156  ETH restant 0.009
  ...
  bras 8  ok   jetons recus 566245.81429  ETH restant 0.009

CONTROLES
  refuse : sans les autorisations 7702 (les wallets ne sont pas delegues)
  refuse : appels modifies pour un wallet (signature ne correspond plus)
  refuse : signature d un autre wallet
  refuse : mode atomique : un bras invalide annule les 8

Local node run (real type-4 transaction)

UNE transaction (type 4) : bloc 12, gas 951810, 8 bras
la courbe a vu 8 acheteurs distincts, dans le meme bloc 12
gas par wallet : 118976
rejeu refuse (nonce deja consomme)

OK : 8 wallets, une transaction EIP-7702, un bloc.

Fire from code

const arms = O.newArms(8);
const prepared = await Promise.all(arms.map((a) => O.prepareArm({
  privateKey: a.privateKey, chainId: 4663, impl: IMPL, deadline,
  calls: [{ to: CURVE, value: eth(0.05), data: O.call.curveBuy(eth(0.05), 0n, a.address) }],
})));
const receipt = await O.fire(sponsor, OCTOPUS, prepared, { atomic: true });