Skip to content

Commit

Permalink
ed19_dependent_cost
Browse files Browse the repository at this point in the history
  • Loading branch information
Dentosal committed Jul 30, 2024
1 parent baae7f5 commit ebe4c21
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 239 deletions.
3 changes: 2 additions & 1 deletion crates/client/assets/schema.sdl
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,7 @@ type GasCosts {
divi: U64!
ecr1: U64!
eck1: U64!
ed19: U64!
eq: U64!
exp: U64!
expi: U64!
Expand Down Expand Up @@ -439,7 +440,7 @@ type GasCosts {
ccp: DependentCost!
croo: DependentCost!
csiz: DependentCost!
ed19: DependentCost!
ed19DependentCost: DependentCost!
k256: DependentCost!
ldc: DependentCost!
logd: DependentCost!
Expand Down
356 changes: 120 additions & 236 deletions crates/client/src/client/schema/chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ pub struct GasCosts {
pub divi: U64,
pub eck1: U64,
pub ecr1: U64,
pub ed19: U64,
pub eq: U64,
pub exp: U64,
pub expi: U64,
Expand Down Expand Up @@ -292,7 +293,7 @@ pub struct GasCosts {
pub ccp: DependentCost,
pub croo: DependentCost,
pub csiz: DependentCost,
pub ed19: DependentCost,
pub ed19_dependent_cost: DependentCost,
pub k256: DependentCost,
pub ldc: DependentCost,
pub logd: DependentCost,
Expand Down Expand Up @@ -326,242 +327,125 @@ impl TryFrom<GasCosts> for fuel_core_types::fuel_tx::GasCosts {

fn try_from(value: GasCosts) -> Result<Self, Self::Error> {
match value.version {
GasCostsVersion::V1 => {
// Detect which version of fuel-tx gas costs to use
if value.bsiz.is_some() && value.bldd.is_some() {
Ok(fuel_core_types::fuel_tx::GasCosts::new(fuel_core_types::fuel_tx::consensus_parameters::gas::GasCostsValuesV4 {
add: value.add.into(),
addi: value.addi.into(),
and: value.and.into(),
andi: value.andi.into(),
bal: value.bal.into(),
bhei: value.bhei.into(),
bhsh: value.bhsh.into(),
burn: value.burn.into(),
bldd: value.bldd.unwrap().into(),
bsiz: value.bsiz.unwrap().into(),
cb: value.cb.into(),
cfsi: value.cfsi.into(),
div: value.div.into(),
divi: value.divi.into(),
eck1: value.eck1.into(),
ecr1: value.ecr1.into(),
ed19: value.ed19.into(),
eq: value.eq.into(),
exp: value.exp.into(),
expi: value.expi.into(),
flag: value.flag.into(),
gm: value.gm.into(),
gt: value.gt.into(),
gtf: value.gtf.into(),
ji: value.ji.into(),
jmp: value.jmp.into(),
jne: value.jne.into(),
jnei: value.jnei.into(),
jnzi: value.jnzi.into(),
jmpf: value.jmpf.into(),
jmpb: value.jmpb.into(),
jnzf: value.jnzf.into(),
jnzb: value.jnzb.into(),
jnef: value.jnef.into(),
jneb: value.jneb.into(),
lb: value.lb.into(),
log: value.log.into(),
lt: value.lt.into(),
lw: value.lw.into(),
mint: value.mint.into(),
mlog: value.mlog.into(),
mod_op: value.mod_op.into(),
modi: value.modi.into(),
move_op: value.move_op.into(),
movi: value.movi.into(),
mroo: value.mroo.into(),
mul: value.mul.into(),
muli: value.muli.into(),
mldv: value.mldv.into(),
noop: value.noop.into(),
not: value.not.into(),
or: value.or.into(),
ori: value.ori.into(),
poph: value.poph.into(),
popl: value.popl.into(),
pshh: value.pshh.into(),
pshl: value.pshl.into(),
ret: value.ret.into(),
rvrt: value.rvrt.into(),
sb: value.sb.into(),
sll: value.sll.into(),
slli: value.slli.into(),
srl: value.srl.into(),
srli: value.srli.into(),
srw: value.srw.into(),
sub: value.sub.into(),
subi: value.subi.into(),
sw: value.sw.into(),
sww: value.sww.into(),
time: value.time.into(),
tr: value.tr.into(),
tro: value.tro.into(),
wdcm: value.wdcm.into(),
wqcm: value.wqcm.into(),
wdop: value.wdop.into(),
wqop: value.wqop.into(),
wdml: value.wdml.into(),
wqml: value.wqml.into(),
wddv: value.wddv.into(),
wqdv: value.wqdv.into(),
wdmd: value.wdmd.into(),
wqmd: value.wqmd.into(),
wdam: value.wdam.into(),
wqam: value.wqam.into(),
wdmm: value.wdmm.into(),
wqmm: value.wqmm.into(),
xor: value.xor.into(),
xori: value.xori.into(),

aloc: value.aloc_dependent_cost.into(),
cfe: value.cfe.into(),
cfei: value.cfei_dependent_cost.into(),
call: value.call.into(),
ccp: value.ccp.into(),
croo: value.croo.into(),
csiz: value.csiz.into(),
k256: value.k256.into(),
ldc: value.ldc.into(),
logd: value.logd.into(),
mcl: value.mcl.into(),
mcli: value.mcli.into(),
mcp: value.mcp.into(),
mcpi: value.mcpi.into(),
meq: value.meq.into(),
retd: value.retd.into(),
s256: value.s256.into(),
scwq: value.scwq.into(),
smo: value.smo.into(),
srwq: value.srwq.into(),
swwq: value.swwq.into(),
contract_root: value.contract_root.into(),
state_root: value.state_root.into(),
vm_initialization: value.vm_initialization.into(),
new_storage_per_byte: value.new_storage_per_byte.into(),
}.into()))
} else {
Ok(fuel_core_types::fuel_tx::GasCosts::new(fuel_core_types::fuel_tx::consensus_parameters::gas::GasCostsValuesV3 {
add: value.add.into(),
addi: value.addi.into(),
and: value.and.into(),
andi: value.andi.into(),
bal: value.bal.into(),
bhei: value.bhei.into(),
bhsh: value.bhsh.into(),
burn: value.burn.into(),
cb: value.cb.into(),
cfsi: value.cfsi.into(),
div: value.div.into(),
divi: value.divi.into(),
eck1: value.eck1.into(),
ecr1: value.ecr1.into(),
ed19: fuel_core_types::fuel_tx::DependentCost::from(value.ed19).base(),
eq: value.eq.into(),
exp: value.exp.into(),
expi: value.expi.into(),
flag: value.flag.into(),
gm: value.gm.into(),
gt: value.gt.into(),
gtf: value.gtf.into(),
ji: value.ji.into(),
jmp: value.jmp.into(),
jne: value.jne.into(),
jnei: value.jnei.into(),
jnzi: value.jnzi.into(),
jmpf: value.jmpf.into(),
jmpb: value.jmpb.into(),
jnzf: value.jnzf.into(),
jnzb: value.jnzb.into(),
jnef: value.jnef.into(),
jneb: value.jneb.into(),
lb: value.lb.into(),
log: value.log.into(),
lt: value.lt.into(),
lw: value.lw.into(),
mint: value.mint.into(),
mlog: value.mlog.into(),
mod_op: value.mod_op.into(),
modi: value.modi.into(),
move_op: value.move_op.into(),
movi: value.movi.into(),
mroo: value.mroo.into(),
mul: value.mul.into(),
muli: value.muli.into(),
mldv: value.mldv.into(),
noop: value.noop.into(),
not: value.not.into(),
or: value.or.into(),
ori: value.ori.into(),
poph: value.poph.into(),
popl: value.popl.into(),
pshh: value.pshh.into(),
pshl: value.pshl.into(),
ret: value.ret.into(),
rvrt: value.rvrt.into(),
sb: value.sb.into(),
sll: value.sll.into(),
slli: value.slli.into(),
srl: value.srl.into(),
srli: value.srli.into(),
srw: value.srw.into(),
sub: value.sub.into(),
subi: value.subi.into(),
sw: value.sw.into(),
sww: value.sww.into(),
time: value.time.into(),
tr: value.tr.into(),
tro: value.tro.into(),
wdcm: value.wdcm.into(),
wqcm: value.wqcm.into(),
wdop: value.wdop.into(),
wqop: value.wqop.into(),
wdml: value.wdml.into(),
wqml: value.wqml.into(),
wddv: value.wddv.into(),
wqdv: value.wqdv.into(),
wdmd: value.wdmd.into(),
wqmd: value.wqmd.into(),
wdam: value.wdam.into(),
wqam: value.wqam.into(),
wdmm: value.wdmm.into(),
wqmm: value.wqmm.into(),
xor: value.xor.into(),
xori: value.xori.into(),

aloc: value.aloc_dependent_cost.into(),
cfe: value.cfe.into(),
cfei: value.cfei_dependent_cost.into(),
call: value.call.into(),
ccp: value.ccp.into(),
croo: value.croo.into(),
csiz: value.csiz.into(),
k256: value.k256.into(),
ldc: value.ldc.into(),
logd: value.logd.into(),
mcl: value.mcl.into(),
mcli: value.mcli.into(),
mcp: value.mcp.into(),
mcpi: value.mcpi.into(),
meq: value.meq.into(),
retd: value.retd.into(),
s256: value.s256.into(),
scwq: value.scwq.into(),
smo: value.smo.into(),
srwq: value.srwq.into(),
swwq: value.swwq.into(),
contract_root: value.contract_root.into(),
state_root: value.state_root.into(),
vm_initialization: value.vm_initialization.into(),
new_storage_per_byte: value.new_storage_per_byte.into(),
}.into()))
GasCostsVersion::V1 => Ok(fuel_core_types::fuel_tx::GasCosts::new(
fuel_core_types::fuel_tx::consensus_parameters::gas::GasCostsValuesV4 {
add: value.add.into(),
addi: value.addi.into(),
and: value.and.into(),
andi: value.andi.into(),
bal: value.bal.into(),
bhei: value.bhei.into(),
bhsh: value.bhsh.into(),
burn: value.burn.into(),
bldd: value.bldd.unwrap().into(),
bsiz: value.bsiz.unwrap().into(),
cb: value.cb.into(),
cfsi: value.cfsi.into(),
div: value.div.into(),
divi: value.divi.into(),
eck1: value.eck1.into(),
ecr1: value.ecr1.into(),
eq: value.eq.into(),
exp: value.exp.into(),
expi: value.expi.into(),
flag: value.flag.into(),
gm: value.gm.into(),
gt: value.gt.into(),
gtf: value.gtf.into(),
ji: value.ji.into(),
jmp: value.jmp.into(),
jne: value.jne.into(),
jnei: value.jnei.into(),
jnzi: value.jnzi.into(),
jmpf: value.jmpf.into(),
jmpb: value.jmpb.into(),
jnzf: value.jnzf.into(),
jnzb: value.jnzb.into(),
jnef: value.jnef.into(),
jneb: value.jneb.into(),
lb: value.lb.into(),
log: value.log.into(),
lt: value.lt.into(),
lw: value.lw.into(),
mint: value.mint.into(),
mlog: value.mlog.into(),
mod_op: value.mod_op.into(),
modi: value.modi.into(),
move_op: value.move_op.into(),
movi: value.movi.into(),
mroo: value.mroo.into(),
mul: value.mul.into(),
muli: value.muli.into(),
mldv: value.mldv.into(),
noop: value.noop.into(),
not: value.not.into(),
or: value.or.into(),
ori: value.ori.into(),
poph: value.poph.into(),
popl: value.popl.into(),
pshh: value.pshh.into(),
pshl: value.pshl.into(),
ret: value.ret.into(),
rvrt: value.rvrt.into(),
sb: value.sb.into(),
sll: value.sll.into(),
slli: value.slli.into(),
srl: value.srl.into(),
srli: value.srli.into(),
srw: value.srw.into(),
sub: value.sub.into(),
subi: value.subi.into(),
sw: value.sw.into(),
sww: value.sww.into(),
time: value.time.into(),
tr: value.tr.into(),
tro: value.tro.into(),
wdcm: value.wdcm.into(),
wqcm: value.wqcm.into(),
wdop: value.wdop.into(),
wqop: value.wqop.into(),
wdml: value.wdml.into(),
wqml: value.wqml.into(),
wddv: value.wddv.into(),
wqdv: value.wqdv.into(),
wdmd: value.wdmd.into(),
wqmd: value.wqmd.into(),
wdam: value.wdam.into(),
wqam: value.wqam.into(),
wdmm: value.wdmm.into(),
wqmm: value.wqmm.into(),
xor: value.xor.into(),
xori: value.xori.into(),

aloc: value.aloc_dependent_cost.into(),
cfe: value.cfe.into(),
cfei: value.cfei_dependent_cost.into(),
call: value.call.into(),
ccp: value.ccp.into(),
croo: value.croo.into(),
csiz: value.csiz.into(),
ed19: value.ed19_dependent_cost.into(),
k256: value.k256.into(),
ldc: value.ldc.into(),
logd: value.logd.into(),
mcl: value.mcl.into(),
mcli: value.mcli.into(),
mcp: value.mcp.into(),
mcpi: value.mcpi.into(),
meq: value.meq.into(),
retd: value.retd.into(),
s256: value.s256.into(),
scwq: value.scwq.into(),
smo: value.smo.into(),
srwq: value.srwq.into(),
swwq: value.swwq.into(),
contract_root: value.contract_root.into(),
state_root: value.state_root.into(),
vm_initialization: value.vm_initialization.into(),
new_storage_per_byte: value.new_storage_per_byte.into(),
}
}
.into(),
)),
}
}
}
Expand Down
Loading

0 comments on commit ebe4c21

Please sign in to comment.