Skip to content

Commit 14deabc

Browse files
committed
fix: bundle proof calldata
1 parent 0e78819 commit 14deabc

File tree

3 files changed

+31
-9
lines changed

3 files changed

+31
-9
lines changed

prover/src/proof/proof_v2.rs

+30-8
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,7 @@ impl BundleProofV2 {
223223
/// [ public_input_bytes | accumulator_bytes | proof ]
224224
pub fn calldata(&self) -> Vec<u8> {
225225
std::iter::empty()
226-
.chain(self.instances[ACCUMULATOR_BYTES..].iter())
227-
.chain(self.instances[0..ACCUMULATOR_BYTES].iter())
226+
.chain(self.instances.iter())
228227
.chain(self.proof.iter())
229228
.cloned()
230229
.collect::<Vec<_>>()
@@ -347,25 +346,48 @@ impl Proof for BundleProofV2Metadata {
347346
mod tests {
348347
use tempdir::TempDir;
349348

350-
use crate::{read_json, BundleProofV2, EvmProof};
349+
use crate::{deploy_and_call, read, read_json, BundleProofV2, EvmProof};
351350

352351
#[test]
353-
fn serde_bundle_proof() -> anyhow::Result<()> {
352+
fn bundle_proof_backwards_compat() -> anyhow::Result<()> {
354353
// Read [`EvmProof`] from test data.
355354
let evm_proof = read_json::<_, EvmProof>("test_data/evm-proof.json")?;
356355

356+
// Build bundle proofs.
357+
let bundle_proof_v2 = BundleProofV2::new_from_raw(
358+
&evm_proof.proof.proof,
359+
&evm_proof.proof.instances,
360+
&evm_proof.proof.vk,
361+
)?;
362+
let bundle_proof = crate::BundleProof::from(evm_proof.proof);
363+
364+
assert_eq!(bundle_proof.calldata(), bundle_proof_v2.calldata());
365+
366+
Ok(())
367+
}
368+
369+
#[test]
370+
fn verify_bundle_proof() -> anyhow::Result<()> {
371+
// Create a tmp test directory.
372+
let dir = TempDir::new("proof_v2")?;
373+
374+
// Read [`EvmProof`] from test data.
375+
let evm_proof = read_json::<_, EvmProof>("test_data/evm-proof.json")?;
376+
let verifier = read("test_data/evm-verifier.bin")?;
377+
357378
// Build bundle proof v2.
358379
let bundle_proof = BundleProofV2::new_from_raw(
359380
&evm_proof.proof.proof,
360381
&evm_proof.proof.instances,
361382
&evm_proof.proof.vk,
362383
)?;
363384

364-
// Dump the bundle proof v2 into a tmp dir.
365-
let dir = TempDir::new("proof_v2")?;
385+
// Dump the bundle proof v2.
366386
bundle_proof.dump(&dir, "suffix")?;
367-
dir.close()?;
368387

369-
Ok(())
388+
// Verify the bundle proof v2 with EVM verifier contract.
389+
assert!(deploy_and_call(verifier, bundle_proof.calldata()).is_ok());
390+
391+
Ok(dir.close()?)
370392
}
371393
}

prover/test_data/evm-proof.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"proof":{"proof":"BjJEevMsXHDtIPlxUeoCX2bSA8c6sqLX/XpKPQk1QJMfRyLL0SIzrU4UZl0kkMGv1Q5dU2v6I4aaBHZpHse0rQoEpct3/KDuf92bE18CidMcavWWPqswUV52unUKKCHoECN5on4o8DnBbQ6Bu0qRLBDEKo7Fe61/+IOcXJMrzhgEoTwgJfK5R/+u0bTlA+7MMfjvm3rhXy3PVUqcwcPMdw9mMUzPBr4JEFKkuGbM7P2uknzxjGtmby4lfS19mRsUC3QG3RFcKdoW5O2k2eHJmG2Pdq+2i0phMowSP/Wsm7YCqLoukIfpkO8M8InHTgPeNEFCJuumc3CUBEuq0jaMVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDE/Ph/AFv/U/tskFm3jTNlLczNnwacW99NKCUlt3IfhB4B7CRvE7yx4czXJwIfVyQuHYG3piUh96g2pKm7prWKjqGnKyLjtR+5jpS1/hrCl5JRBhhGI36yY1U9BDeMsYcZh6LddY9cSopo2WsQs85EKAC93m/jaKfgvkHbm1NCRUrP3TbKZrzy4ykqkCI08b4967gJf5KcU3O6+44jrSeLoIhKUb3LEC58xBb9+zU9dG6LvK3olr9g+NG1FAaLN0IgK35iGcfCdWygichS0m6BZ7IKWkKFt2Ejbkx0DT+mC5XlTgVNOYjfI0kV7s+Dze0xtRAFI0xrPsYaZeL7vtwHbr3cnq4YIjCRFqc5v9SCcrCtCEBa2vZOrm1ALotLYMaw8296Wxn9dkxiqPFQdELreApeRkjBDGtC8BB/pbGKywT4Bs+1hdymaWaSm4chJIM+NRvhx+Tj760zDWgoVCoJpy53KEBojp+1cRSvRqjIRSmOUsaNVzJLdttqJC/e8oGvIIhrwYqIcqyRSuZUyZhje8X/vM5BurgJ6rB/VZOYgQl7/gvxF8YMZugw1o3yysRm/Ty1PIB7aQ3QI3xq1MLB97zm+dMbKBBcdpoHaafLEpSCoVk/k5j3via0wLc2E8rzU2CjhBcb2/5J3AJaFdAtDMJzfjer7Nl+pEaNUpA9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI0YVLzRfhvaF/BWexkAPTcXD/OArMbzDFCYDwsZwaCQhODMrc3pLx9Idn0tWogUZhNcshXeT1ZvoQihoUGYe5CWjNYkUQL/BU6NNOVR/Qu9zAAIvmIrFUehI6uGk+U0VJzdibN6HYeTcl71HIFZg2U2cRQJf6w0DTakiNi7yw1AkFLzHoiZAK3A64qERAJZABceofub8iukNXqWZye//cBF/QGDV5PZpJ5MkKsSs1ZAvhaikkIYC2yS7Z961UixaD48hlVz4oSu9gSrVSaKWh11rdeAc0+0QR9vpcCbVpRsdFMx3UUNKsyqfLhGqFdUMEjtOBJtaPiZpEUbaFE9pfRiMQoJ2CUhMLqMdPat6I68lKVomI+B7dUTdnQE2z5paC6ANsRTqFe+XFs02jMWs8Fzdzem+1mtAD/kg8EVCpAMEfNVwpN5k7IIrNR85wYrLHJv2BjPZ96rVWbzcwA9iahlV8ffi7tRx9nyktFDyqkRnt4rOhG5fnOXeYgHBCyjH","instances":"AAAAAAAAAAAAAAAAAAAAAAAAAAAATsr77L180+rltu8AAAAAAAAAAAAAAAAAAAAAAAAAAABefY5cxwF38vJYzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAArCDECPfov4UFWAAAAAAAAAAAAAAAAAAAAAAAAAAAALenFkSCzypvd/0cAAAAAAAAAAAAAAAAAAAAAAAAAAABMjhObP1Tk4LaWwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZxrJuGpKtbvScAAAAAAAAAAAAAAAAAAAAAAAAAAAA9zQeyDLK1z8vwKAAAAAAAAAAAAAAAAAAAAAAAAAAAABiemRbiOBgZTMKvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHDamTZozsaVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAUn2flHFfjCUj8UAAAAAAAAAAAAAAAAAAAAAAAAAAAABuIYooZldvq5UVqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQnf90hS3Tv9G91vMloktkEfTw520n9B8XWr92uzMdjzvot29jacqJcAAAAAAAAAAAAAAAAAAAAAIY+4Be1mT6hzdgY13HkZNAAAAAAAAAAAAAAAAAAAAAAOYRdBTeI/h1ABow+afQfsAAAAAAAAAAAAAAAAAAAAAKusra6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkBSU3y4mikWSpekX65K5IAAAAAAAAAAAAAAAAAAAAAFwhiTka2U7nZgae8vzYraAAAAAAAAAAAAAAAAAAAAAAz7n6jeqFPuxKFRp/OqlKdgAAAAAAAAAAAAAAAAAAAAAkccTpus5BBCOxH2Be8HGTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJ1AAAAAAAAAAAAAAAAAAAAAAsG6UZ0iMzttF8QL7yOb5WAAAAAAAAAAAAAAAAAAAAAAf8LIRd7c5Qinatn5XK//xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=","vk":"AAAAGgAAAARX2S0K1wF333B1waOsnG/vcASJmWG9YM6SNWCBy1ywDypuNyCQrqoPJvIVXOq6I7k0FOLtC23/wUlpV5XZJVYRvnTQT732GsQk9SbLYKO0HXDQX74zc4W6+04/WbBby2RE5Xpxs7SS+QefbTL8QYR7MnzElOK8gyZFf346gyd1DEa15Vck1FpZYwhhPwHa8a9F3fkVWmKrWs8XIHYU4hNSiyVw+UEuc4FYFVc7I6aoactklYnAfIPu3D9rzH4+i1+gXJJEqDXgfWfK+9szR4ysEnkuzgFrCcTvIG1U2mAJJg==","git_version":"33191d8"},"num_instance":[25]}
1+
{"proof":{"proof":"H9nMdYzj5J/33rD6goSN9lyy4Jr666ENcw2pHAGn1FkEsFvhOT3NDdgsgfuiDoNWIadyYYUdmHONHTwH7ebzmB+lQSAvm0OFmwElTI/LjM6IIVdAb1RHPEabJdbr2iwbL/Anwh0qGMuhVu/KxZYddBTI49kkMylk3rDC2/ezd8whHpfxlQrBKQ4YbOuCe67ibS2HJuvPNbcrVc6rduvdmhzSwe+0+ibrpqKlZDCTRiIFMf9vvl/xDCX2MItcMTquEkOLzwDz/ZpQOzXeU4bKHQJ2o/uIuHPuxZGz1JRsbtMsC8WkxGkEdI9wYWCzb1RTAF04ysuEB2fz5Rs1AcKwNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIVha6PsHnYu2BMF65H1r5w3t8TDIQpkpd995gpNT+DlC6kAeR8PfuaYNInRCz+bZ+v+WudB+JkLAaSViDf6NzXIw1csn4q0bjhiOw2O1CkHlSP0fs6BYUXfadwSDiPJ3gexxH60j3mSuo4tq/dJKs0YDz65yYAkXiEjzzYoaCXzg91GCdfm371zZ7YX3tTT4f3Xf90sC+6GOSlDlycCUL/CaCjm576YHtlW9A9jMuvrTx9rvAjHvIdX9kvKj+P87cZ0jJB0tfogiUUYygyxerjdzf9qALmyEpYCtoaRzRhMg2POREZV3dSL6Ig5ABpn0ho3bwRzFKo3HtSKwWuI6amFY8H9ZAh4Y52euPMCfV7q/QuwgXppXuOOxs0Hdjyg5oSgt/476d8RhM0NYdcj4qQ/8jeUmuzJRJl+1B/AaIEEBoLFRvstt2BjTP2UqvGtSxmSt/d48ENpTXzUbZLN4/0K57FWnMJcMZ66soZtR08Wa7W1DNugZa2j0RzZftR25AWWKVZBxuCxCKt8vbXWG4+NdXK2MFpt0SO7lplFp7b5Qe7bpb4LSttaKFhpDGnAb1zbh+7/6IDnVV6uFGM5WdbFSyOIAPdI7bxRIN7quKNsZrRuGG4MGhjivu2b2XNrT0GEQ31QFiYIMWWQCfAD3RaTTgCVkEacNr0afmtJdDHkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGvjx4l2EnqDG51SVmUPBMGFSv/BlgRVBFvbnedZmmGIwKiZd+x176Npu9HfELgNk0Qd8FX+1zO4UhZxuLwB92A5Bx53+YGkeFiKN1Hcv1c/XNEL8nIDW+RrbjgJYNCAlJr3v84qH0QrdD/H6Y4EIIe7J1FBvcaNpjV2ahYpebq4sO1DUWcELW0jibLZGkuQmotGtgUkAYZ3tfv669SadwQx3dkZQV/iTP4ELf7DuEXeZy4zlq89uijd1xiklf0MVLrclJnwNwkvXrTjaYH8m6lA9UlAhTBFItuvseQek7qAcWbyt4pE6G/93cyYIsV6iWWQKDuosoKNKyE+NwsyAii8Llv2TuPdmRMSYTd8Y+0BCzjhqrmOOmEmu5COZem/sCwQH92CC2W2Oq2Jtvik9/bwvSMfdOd+sOfbWM/scRwQLxqk1yPYeGtPnB4wcTDV5xEX2TdpD2IVCEf863NnOhSZOwDvbZNgDvA3LJjCJ04C+O2VoGzkNdpTgMJ84E5lm","instances":"AAAAAAAAAAAAAAAAAAAAAAAAAAAATsr77L180+rltu8AAAAAAAAAAAAAAAAAAAAAAAAAAABefY5cxwF38vJYzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAArCDECPfov4UFWAAAAAAAAAAAAAAAAAAAAAAAAAAAALenFkSCzypvd/0cAAAAAAAAAAAAAAAAAAAAAAAAAAABMjhObP1Tk4LaWwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZxrJuGpKtbvScAAAAAAAAAAAAAAAAAAAAAAAAAAAA9zQeyDLK1z8vwKAAAAAAAAAAAAAAAAAAAAAAAAAAAABiemRbiOBgZTMKvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHDamTZozsaVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAUn2flHFfjCUj8UAAAAAAAAAAAAAAAAAAAAAAAAAAAABuIYooZldvq5UVqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQnf90hS3Tv9G91vMloktkEfTw520n9B8XWr92uzMdjzvot29jacqJcAAAAAAAAAAAAAAAAAAAAAIY+4Be1mT6hzdgY13HkZNAAAAAAAAAAAAAAAAAAAAAAOYRdBTeI/h1ABow+afQfsAAAAAAAAAAAAAAAAAAAAAKusra6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkBSU3y4mikWSpekX65K5IAAAAAAAAAAAAAAAAAAAAAFwhiTka2U7nZgae8vzYraAAAAAAAAAAAAAAAAAAAAAAz7n6jeqFPuxKFRp/OqlKdgAAAAAAAAAAAAAAAAAAAAAkccTpus5BBCOxH2Be8HGTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJ1AAAAAAAAAAAAAAAAAAAAAAsG6UZ0iMzttF8QL7yOb5WAAAAAAAAAAAAAAAAAAAAAAf8LIRd7c5Qinatn5XK//xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=","vk":"AAAAGgAAAARX2S0K1wF333B1waOsnG/vcASJmWG9YM6SNWCBy1ywDypuNyCQrqoPJvIVXOq6I7k0FOLtC23/wUlpV5XZJVYRvnTQT732GsQk9SbLYKO0HXDQX74zc4W6+04/WbBby2RE5Xpxs7SS+QefbTL8QYR7MnzElOK8gyZFf346gyd1DEa15Vck1FpZYwhhPwHa8a9F3fkVWmKrWs8XIHYU4hNSiyVw+UEuc4FYFVc7I6aoactklYnAfIPu3D9rzH4+i1+gXJJEqDXgfWfK+9szR4ysEnkuzgFrCcTvIG1U2mAJJg==","git_version":"33191d8"},"num_instance":[25]}

prover/test_data/evm-verifier.bin

13.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)