Anatomy of a real FCMP++ proof

We are going to analyse the transaction below.

Testnet transaction 1 input / 2 outputs
{
  "version": 2, 
  "unlock_time": 0, 
  "vin": [ {
      "key": {
        "amount": 0, 
        "key_offsets": [ ], 
        "k_image": "80e251c490c65c224a758c2caab46291ffe5d994232079ea37e3806ef2876584"
      }
    }], 
  "vout": [ {
      "amount": 0, 
      "target": {
        "carrot_v1": {
          "key": "0792db64bace803ba7ce997fbe8ba6d935ca5bfbd527e44f7ca3dcaef17794a1", 
          "view_tag": "728ef0", 
          "encrypted_janus_anchor": "729fccfbb96c2be286c2519e9fb4c003"
        }
      }
    }, {
      "amount": 0, 
      "target": {
        "carrot_v1": {
          "key": "e44e0f9ef408366bbc4a11f8ae8f33e2a3e08157ed0ee5e241c8ef63462fcb5a", 
          "view_tag": "69dece", 
          "encrypted_janus_anchor": "5a84eed999a291d15ec3787523b00098"
        }
      }
    }
  ], 
  "extra": [ 4, 2, 139, 23, 249, 69, 114, 105, 158, 208, 233, 120, 62, 167, 42, 193, 110, 24, 56, 78, 19, 12, 172, 199, 163, 228, 32, 157, 245, 129, 121, 180, 82, 78, 243, 134, 81, 139, 165, 169, 85, 240, 44, 55, 189, 172, 253, 173, 108, 184, 77, 229, 175, 58, 38, 154, 133, 222, 44, 0, 23, 115, 231, 164, 221, 91
  ], 
  "rct_signatures": {
    "type": 7, 
    "txnFee": 600000000, 
    "ecdhInfo": [ {
        "amount": "86a9b4d43efe4e09"
      }, {
        "amount": "fda219b8f3030566"
      }], 
    "outPk": [ "99110cd5fd06ec29a4a32423bf04967194b3ad38ff45c99736a688689de29bc6", "9e5ebc7e7a3890fbfc51614379d52c0dee4ff93b8256fd05731b4b2fa3a18656"]
  }, 
  "rctsig_prunable": {
    "nbp": 1, 
    "bpp": [ {
        "A": "d4eabc649f89889e34f5da107b9d087339bbde961317a75b9ad665cbf6afedc4", 
        "A1": "788ed6be888fc0e6daa40b42d6b1abb6c40ec0606ab923f523a395d9f4d8203d", 
        "B": "1a264c7e8861bbcda8d5d33949564159a0e4bc1140c6f47aba1f6c2dd4251d02", 
        "r1": "c43f430e8a594b210918e6c25af54d434ce94883dd4b3bfed2ad19708ff7ad08", 
        "s1": "bb15a2a0a5d04b695e39cbf4d7185ffea40750e87c536cc24a73c7b36bfba20d", 
        "d1": "8ad7aa46c44628773995a31eb74d9129131e5cc5b7e4c528ee3b88fa4cd8d50e", 
        "L": [ "cc989f321bd35fc86abc538043cbf99e72c33a72a592c4d11854bc721cc84364", "4816b9b6ba9d87076751ffa887b48721dc3536445b70167ef4f8eae33a7e092d", "46f455ad786a659b076346582026f97dc76e16c99b60909ee7a91c13c125c7cc", "5b73a57806bd64db0364e6ac99dfe8c3a0647509c58077f5ef868f790ea22fb6", "9b242d174578aa1cc733299229b57afa0a6067ae2ae85436fe548eb8c4e9e361", "e45fdb1dd726a5d2cf6b1f69a79e76477eda93d56157ebc4efd0223ac0eb0f1c", "bfd099a99d0dc6bc165ee78ba86081668a26899f9256ed86ff6194c4cdb772bd"
        ], 
        "R": [ "2223f9a581336d01bb3699f931ee7d5155b7f53d998803aba76b30a7f90040f7", "8606934a39f9ee01dd515614e94c44cfb3e0de13cb021d997206451d850bd4df", "9d84c0c37dbce3b1b15154c6fdc09ebc37cc882b9a0f175cd584950d990a9df1", "b3e81fd5ee6910a3446055058025a666adfb936c08775542b742a4108f51ebcd", "b76ee97ffb6d6bb557447e2ef306fafe71bca21be780efa52301cb90e9bb92be", "6ef16fc8648e68ac3de3dd215a1afccca8c83dc12c3b45ae640dd4e684c9d806", "d8753041dc3f7f7d25b41e86f04d17c2e0238c173c0413770fb8216c51bd4d99"
        ]
      }
    ], 
    "reference_block": 3073976, 
    "n_tree_layers": 6, 
    "fcmp_pp": "f71b2aa43485e2f1311d9ca29fda2af06d17f0d2dee91ea1e924f2f174f5fe5051448a0ccf621d52939d34b74e6b4c0f4ac3edad30645eba0323f4533fb0b65035c61ff53e702b2be7caed908739db92d13da85e87e1acfddf4ddc622d3104761924f4e4cfc5533081bdfc1d8eee24a62f40e61ccbed2705700d2ce3abf1ac300ac37f5eb3d5f60616e286316160f50f477d48f715cc7e5f6bad3219945537c8dd1286b09cbf6e88077112f04d3e74741c3270089887b21c931544ddfc118c307b9f1acbc068ea4cd40f61c0632137968c066054080888e310b7c5a8f39c24a79a2871b0b1e37221ac5fe4503e68742bec42d3b3808299f86d7f18432f41d7fc6e930a718752e86f80c52e9282ab782b8e5c1ab51b6e6cc0a280fdf3a2607ddd5d6fc8d36a1832c4b2affc4fd420ca25361f346fff18549e6364448a6338b50ca54b6199c6634f5b78d55ec101d6f2e59168d08d4f275d70205a4fc4938e1e01b015b0d4667cb20dfe63032644a40957ae4ee675c9240be10c579416ee10af015b930f6189a8f28b7941cdce67e4009865e869ebe68da7d863970e3805a6880bc40b21d9bcc406fa5f4422aac31f0254205500c214ed5fab3d55b491dcd46b0b1c76474565672b5464eb971e5d5b751eb0895cd69d8a86a8ad1a4b24c1199c0b9be834bc026c16cd42d81eb73cfcfe0fb5fe3d6e710e072e330d7b5b8d357f594b2c2c109c0f98472bb88b8b9b665d27249033815da3dd850fad29ef761569a09e3e52d050d6bd7869ffa209a248140bec1281924ae6c24355e4d710d84e4d671872afe8f097ec297b635d294562b5c95882326ea84ee96c3f4325282dcfc15084abce2a9704379d9639f82add2145a4ab7788b57f5ce578f54cca07fdf2346e0bdf9f2c0917e6ed2d660c0954c9e50cc50279814d0e962e63f38d8550299620e20b08f53834f024c3f242ffee939a7834a6527f396438c145c592ec7b1bce4e18127abf5a1a237c3b6325e6af7d6e83f7f5ccfc66f47eebca6ce6ec8b9f141ec939be976a4073ee90efab41defb272adc6ea89748a41e644566158f9fe587784d2eedec6e084845b95b09bbaa9dfcf0a68f259d4417554b133c5c2db6c24dc4bea608e804076e9535491a65eacf0d06d972928ff398a7614b059bf1b0ad52326d97f8a528841416dd8c60a37b942ecebf9cc6f49c9878721889a12e88d0cb8de6f89a7192b308cae8b67c045142ab332d87a5c29fd008e2bf99d72785a7a8ec240a3660f4fcaeee722c466ca85f6452eed28c6416d6254fb36a4452f21b4c43351bdcc04eceb739aa018427c49d518897b50969bfb7d9b98891d9402224b9e21b2491d1076ea4386316159d8e1bda57f840e4faffedb8dd66e1133191f453e8c98b1633d153abdecee2c19d55309a75ebcfe610643935545564ceadff98af4ed708ab3de741e084e696ccb0d6a474462bdef46bfde7562fdb8829e68cc00a167ed1879cbe0b9919260a1cdc06c3a47c4dabf08b1d8457c3f35c11e01bc8bb4b1ed2b0a98eb8e6fba86155369d3bfe3271087777b1bc664eda4513ebcd2128b45b77613b90f2b90fb4079949c48faf0f4259038bca8570bdeea0e8580f3e7626fec7cdd4b430d469a5aa393e35316e24b70695e6423f9cc8efb9624245d0a3f694c5c84941ba74eebe3cad71ad34cca4e5ee1d65b8413d1e7d9a40409b2bae53b0fc067f31bd92f84d5531ca88ec8814599f0e870f0333a3a9332a18993eeca12410a6cfa146f3153f8dc1c5c1ad90dc3fbfcd171c73344448b8e24dde01dd058ce8a81a1d8c83cf5424a6b51f9e528339432139154ea55280b0678691c3f672772a7f272986475a5c3a1a1385f87388a7f609f9801c1d3d3da9521e93ec38ae70748e6282662a7f214dfb7141a12c5bd7454156b8aace66df628c2f5e13ec63e35bb545f2e9cc5e34e5fdb0ebc3ff9bd4cb22d601a7f12d4b4131db6dae5fe17c3ac016959bbbdc71f9d3d30aa9c6edf43d07ff4e0469b2d0e865b792f71ab5b68e24c4f1f220485879b6469df3e857519bb8f051f3b91803e3455f17cf00b5d8ca6ec7121d2c8771785d2737f2bac7bc75780669e01017e05a02d056b0327984d7f1d2dee4226e85043bd887164acd8b7b430d54b5fb1bd5be7af8312e333d3b2410ad93d81f2a3c925cfbbc480077a6c173e230647b0ddf5fdb5d4699f40d299861cc6bff900442033e608bf8428beea737a40f856302f93e732099b50907498f67949bc8dd68d833bd0307e54626f63806a83f1fd953bd171b9cefec651ccf24a83f4039cde1a5dd9d8877444d9426328c58a6265d700074c448c4360fac88e33db27874d3b80050639f561c614ef753f1df9a3f6252578079bd68223d3c70b8d76a5754ac1e3dcd36d18197dfd592038ec03156fcb87ba220b19bb970733ecdb9419a28bcb2015198b6de0fc024dc076a32e0a2839b8a80ccfd73ea7824f16ed075a12a7bdaea9b8963826e905dcb172eac7f33ec31e43f358d9dead0828edaa0c97772cb7d72501e24d328753c9caf60e2f67f868a80cdea57a4a6232ee44f1cc8fb8f257e4fc87b93a985abdaa7743f92943b424ed59f306e1e13d222142715b2cc99e93c2e20935ac4b75b571facd4293fc68d8334d839da8ddcda7c00eb71a0837d2b1fba74cbdc776896c80b39d5d6724112cb99d79df2539cf112183e4113edd7888bc4b5a6ac7b6b9dd25084b091868da82024b5aeee7f2e151735c8de3445755d4fe5d9291e9af90d8aab053885835161d21713c611f89113da3f4ded2fce7889807d64704d2e3ff8f8542ea7e329a847ba9b636e3ec9850e885973b4cc0b8e4df0533a78bccefc7f9ea3534992c3535e00f7e7ef7bb56357ff4c45f6bfdb412c717240f931e6edd245c4af5a4c0f8b33d40d3dc8d466a9a52e21d41fb703114a516412303183df0e4d0bcc7076ed925d00f3daba27359be8b24e67244a04d4183062e5051d15635c159e3a5c59f281be6e76ef627f89ec76195b0e8d7b8b03dc73f75ee1994ea5a3868c0bb4a315f43ca4a12977af86ae9756b16cf72425712dcd60fa6711835c6a9c50145d948d84f4cdf62ddcb4d12ea31dc8aa3c4a9c564af4563aa9538f0edb433bce6cc8be9429d41a6370560bbeb2dee8ce7ef2b6f192d73ec8405c8da22405a925f2ad8e30237281ced4eb4569c4fb1a2620ea8d3ef530c274d149ab9b1801530055dd03500f043608d40a54e6cbf5a0e773f660064e0c373d79ade3abc1f9e76209037dbb15ea1322af4059ee4bb9c77d88c23b17eb58790a5e041b901513dbc595aa7bd40cdc904e728caab4282ed9f1e3576afab58d0c9884a3d2ebd31fd11860613dac33b32d51de1c065a39e2242207757995986e7124cbf00fd6e1790921db7891649d02c290ac742523efeae80be3fae9267d12eb313e54956fc571ac03c0f57d7cfc0e7a70102f1facfe6eb722c0bd83071ac9df8db1982884a66f48891833932aa9f6f9afb30a3ae0dc8ca3a7a2cc8b85d6e549f4425628e522c3be2f6093d1b7e05f0d11dd00bc2f8fd937790974722028888072c52089679d51bb892ab181b0fc05aa2a7a3b4a7d203f4cf7ec763a6e23c4f04bb913a051d12126729166199ecf2e8c9e66c93868e119e14fc9751a184413b12e4e8a9e19390fcf42d24570a0aec9f77cb227daf06023bc22dacd00035be962b7a5fb793bfa1bd4188153b8376adc91404678f29464c08c62dbf4e9c34c590a891871f07d0173912d307cfbcfeb4e100fb3cd11bc02a2142f3612f690758934b87390446fb9ff125041823c81325802736cce005aa4c42fd12dd377d10d8317d215fe6ceb98d08c7f04fadca64475dcef40e2fa5de2edd8ec1b8568dfc8b6864805786f2ec1449d386ab55c367b5af606d51a95be28e1bb847113a655ef8a9c92be210706b270cd009076ec8e2cfb79fa1d86c97faf205aa8a95d5c68b353056dbdf94403103dbd65b928826ed954c42a4fdff27174231bd86beb7d2e7cb591c73900def300accdd79f0359dbcc0edb059cf60832b767aa7a2a77e5ac552d72d0609320d25160579861eb569d536d01407d6d04b8438a05659f8e1908673578333f00ea5b252f0ef0cf580493bd958c2d15ab911abbddd800f56a1d878c0a87bb5160dc8c0bc4f22eb5dd621d6330a0ddfbfdf07e035dcbb9def8e98ace1d54ac9868120e83836cdaf02578571c106c91c0237158aef39701642120385e7ff79a5934adefeba2b35fb2275c8db10de231bc13f1bc262c2f5a05ec75c5a2f07c0472ec685e01526d512aedd9a52e43663c7b6c8c5bddf9b3f218c7ed4eb2882151c5a3aebb649c00ac3924e2e2d9504c258015b7c7831df4e71971ffea0a94a1481cd98a0cfe2906ed87ac910bef2592b803a87242d242565c27e98548188610b15fae077a8fad85a605d8c2517ef7429cda5431da22ce18f32841ba8acab75e0a7208bc32c0e7a9b378be7ec46197b08c374008d68493774a32cf05231ece16eefbf790436f4ca3835edc4a345c0ed2747014425733e23d37190f7efd43b67c9993a9c37987c483262822b17dc2b04e3e126c75645b0a41eef7a21ce7de3ad3c5c6bd5f1838d889f10ff7b8ab3b4a5d208c7eb57f202929c3673573a3a57fcc607651701998838f479a6be3a778ab100cff0eca7834674f210549a9308ae6ca0df3d93321ead2a40eba6c8845b127c7413936483e332340d1a668e4f1e6a4afa040df54c1c498c1afb27e4f2e76dd68af2fe6effe83b16e4b406890a4d6f3000719c233c9f2a9bdf42a458c7f649add7be6b2958386f9b582e8ef619b13aca0caa142840f7952b88ab604d459096f32b33b8a19e3052f64cbd322bd3900994affdb28e7d52383280ac6d8cef0002ca054ac497358bc34924d4e044a42c19ebea0b299f4ebf214d509419fb0d4f4b463c6ba71d28e4dda519ef1db772d587c1e4efb702ef31119578c60cbdaa17fb2b6d6d9c53274a68dcd99c020a0c183904a7c2a74946893bcde0133eaffb9e3f61d1b3ec23e22574f26f8b9ff732c02a7dba1d919164ba5fcc54cd6860b7a995157c54aed3b03d5f25b252bf6674b7bc06dc6baceb4e0f8142d587aeac11106522e6ec1dc9931e796d7229d53d47fb2010d6f50327355835e77ba496fe413099e356d113ef6b3be8051e6f7e6162fb07d116e26ef532fb1382e2a76e66b9ba5506a044ebc72831bdf68573891c57ece505cc391662802757225dcfaadb89a866281c9f737623d7ed061847c76cc34707de28e2d939b7cf96edc297d67488f178ec93969af078b0686efa01185bdf78f326c57d7ab2bf0e99d85fcac95e13ff29da900bb96dbae4b989fd3d25d25caeeb14043bb0d20f23abcfce3edf8ac2ff24e2476a19adbe7f132dac3ff8610350684338e93d9c7d8f2f073aa6e025103eb17c4e019f62d77ec8066aaf0ef7fd3cbacbafe9fa15ded252bef70b9b0e4ea7d27c1865a5b35741e3d1845c797748983c0a567358bf6758f49193c3f302472709af48a1dd57fc4540276447122479d341e58757559b7551f13cdf51cf5bf1dc3f37f8ab5573d498a0b4fc25b25886a752df97d52bda36da9be09e7f1b78a6c36e7eb645d7fab9ab3b804d0ef2a1655bc232075074c6cd7234cd83579ed7056210a5f053a8aec5eb187e52f758b400a7dd14f466e47329b93da8f9ee84f802b6664e4a1b08d1fc72f9eb0218f007914f01be417f581cef7db887265b230b2f116e3114b0c3ff9e4698f1e311a4a8c7deec10be66b89dabeb58a28f32ef90c1df4abcd4bd290e2f8a4f141e8e1ed7397a02e3b2fe7681b2a1fa189accbba290ded1c5e7ff3ece769eda1cdca3f714ab22ae9ff275d7fb1fcff348a8b806edcfa54083711a18b543752b03cd80389987f5027aa3745ae1476a797d8c400706bb02ad9cdb068067cf0361d5c814e087a5aad66ce76cd17263dcafe0ab9a5a7cbeb0382e4a9788fc6c591703ab9cb06fcc7fb78923cf018a6af7b6a59f1e0550d4777c8f64d5d26fb45b99b55d503a722579ddcec4253cc74ff44e58458315a0d8ebd4efe53671b2f3b043edcbf6aab356ff60f772f3a326aa08aacf84726c5881e3f6b24f49f93640a33f2cb74ebdedea728097a7191eebfd9353523c96f56c1c4792a67eb0524b88bcfd1d812ca678a7a33ae509f16e9f192ff58daddbf21d093dbc47c46824f4b51c6dfdf9907111ada4fc534179c871451631d2f840b1627d8b72639f1212b928d82615cae22ffcec73b9bcc243657452c7dcca3058e25ae1391911728e97cc4bf103248085f24c0e638778cf0241e507b8ee20e66ef32ab1cf20430584a8347b44ee22ab40a56947a97496c82e5eb752155db89f9bf96d146648fe1d0c98fa346bc9a39b327b59d78570b6f67d0fcc43be456e042b9e750f21032e99914dee3f265cb62e1fccb7b760d2cb7d73f3da57c361284de4830f44bd62e1dc51265f02a0cbe11095751b399f8387bb015ea6c0c309d2f35327f56e394746286e5cd67d6ca6558634080aebfd0d9df7ca9178591827d72a2e1b694b323867a2ce5f407bb0af37595882a5307e3daf230dac9ebaecfbdfda2a78e091523f8fad69ac3cffb45ebd8d277b67d8b704f69b0395ecbe21f6e5f2ef41f0895505b35f07898cf91e24dedfe64cb06a85185c0124f4b0f6c8b1f20dbe3909a3e5f7c10f2fb15a9084224498606a576bce2493225e8c010b6eed0af2eaa0aa3ff527ed93d639b02e6bdf4b7d115ed1b4c8928d9b9ba5647d90f734faebedceb2e8c4c60a40399297f9c03e0380e3ce4f25a020ee656b8751fbbd8b6fe6b07fa0b1fa452bf1ca4e17c0f43e03fe1ad6178832829943dd2ca900c032eb94dd4693f598a87ffd730dcd07be0d435a2b5c6a0217f14250ff5f8f108dabe7cfe1791ceb188f796a511231ce9fbc1f528cd12617bd91757cd555d2a38665605da7bc20ac62cb0b939092e6901b66b036ad98c8578161819ab749c118d201bc7db17c4cda64444127eba82f301b6c364c08e06b5a28af84116c716ba80575f81ce8cda913446938ff6e04324880fbddff62d8246f7e37b9abaaed0c92dcba1fbe6b7c88130cee12231455613e9806bea324eadbcc73d663f37e1966e5c8f4616fa4150ab9a90c6a0a3e3937b9ca88780fbe4a4b67e715d58255e75cfad849ed77009bca95ecdc8d19b9d922423c94086e4b3878bbed6983e7c0c7e296aa6b52d76d3d4e92c39a4a69eb1a0e2d0edda6a66f69d6c01f4e21ead0a3574615b4856c97263075af436b8ffdf7233fe0980e68547fe5beed8840b0c4515a297e4fe741a75f4bf5032f14edaf998c230406ed8527dd3f3bcaf37c369e134eb9702a695d7b8b64a90ddec5732e1263ebd6fd3d885076049706b25a3ddd06a7c201304eaf75329ea8fb5f7751627fe1523d9533ca28d6b113afe161f321016664342c9d9bf045eb15e37569bf8edd5c7687d1a0a2e475cbc42eac18e32e32fcbaa0890d8d784cc38458ae83283739e327926383c3605aaf6f19c6fa4364e550a5091efb21344aa7386dc503c5b80e83d5746aed5658c74d1edcd845718b541312e10abf38dcf82c1d26b5fecfa4a5e8da057bc167b70ec95d1d43604cbee88ec7e896dde9feb2cac2321aa792e6d04a6f069e19a99583f0479eb616eaf9c3c0504a4f68cddcb6c7d00d5eed78c9559de76bf0fcead3ec68123e3cb767bb17211bb97ed1bbf4e839e80eefb36db34bda24d5dda3b9affa2490a902a5fcf6da8463c45cfea6f3f48bcc50df82acac98823796a0b5db31c055e4526744f9769f5450501e4fc46d3b26f7cc70aab251f595ce4c900cd032c904e2064b9e2908b453b4e22e677c2f8fdaaf3bb1bbb480473e701ba667b316c6724aa3914afb1804e27394566342ad68682ba275599c8402d47992485f3477f7f76096034929693f1decb4266538668df95c3055a89a1ba1b34593262a0b52818ed78fc612e69742c408d774eea6ebbf0920f9a5bebd38089005f3a7a0511c98f357d2eb0d1b35864ddbfa271b8a3b15de13f8a4bc60d541dd51b0501c756751ab74b807d00369595e261b1a20bbf7d389e92a5a2241433c1324dbd57df3ce8b0ea78d003a71eed7a89edcb381f2ca5fefc6b38fb458684123190646211ddfd9aaab1beb5993c62e7fa978e60fcb04802a4031338a44967f6dd61bf4c68e191c81ff3f4ff20c94d641cdfdaf4d46d59a69c7a891e18d97c1e47ec151198806207a2459f20c802b22caefdc1705e2489a1f8839f4a32d43a27a8b6e220a0574ab654e3d3fc7d4c46f0e0c094b798e189b8f17514816659e9f3e430fc04e16b30a5ab03a02702f61aaebec3936594906af647e319dbf353ecc978179fe96cf679f0a8497b45d135dbd8d23bd4bc4ae8bb1daab13a8a711275ff0e6c9f65df6a6c341f5173fffc5cb1ebb20ee1743faf807fb1eae8c870fbb7b995ffc21b5b4a3d7844e3b91f9e7fc1e902358b2f16d2d6231a6ad59fc729c512a8d450993e33ddeb81b13c96dfe571e3c96c0194a49d4a3584c91df6501c68c5bc691813e49fe435ab735714b7474ec785a2beeed221fd03f1a349d5a5994791ced441f3ab91a4ec8efee971e751d002eac3f343f5c87fccf1648ce419f0eefa194cf89209173392ab2a2026d5611ce49fb7ac1d8cbfa3805971c853fe4265754e4de3ff88c4b7a2c7ee8e4fbbdcce6a8bbbf673194389ecd8ce4d388dc438bd00e111c73b31469103ade8433b78782f3424ebdd75a984b779eed00e5d4ce96e307c540ddbf0f7459a95bc870614c1fb23cedf725dbb845800a5a8e8c330d399fce08eda23ae70b8da8e0b5fae95fe315810dbc2885f4c6435c384d9f4a53c07c69b0d", 
    "pseudoOuts": [ "454e867009aef302815597139182d3b8123f57c3e09cd6ac724c4e7c9fe59d49"]
  }
}

This transaction spends 1 input to 2 outputs against a tree of 6 layers, and its fcmp_pp is 6304 bytes = 197 words of 32 bytes each, where every word is either a compressed curve point or a field scalar.

in0480
C992
Selene BP2464
Helios BP2304
per-input: re-randomized tuple + SAL tree, committed (C) the two Bulletproofs (circuit) root anchor

The fcmp_pp field

Three regions, in order: one 480-byte block per input, then the membership proof, then a 64-byte anchor. For 1 input at 6 layers, 1·480+5760+64=6304 bytes.

byte rangesizeregionsource
0 – 479480input 0 · tuple + SALsal.py, blinds.py
480 – 62395760membership prooffcmp.py, gbp.py
6240 – 630364root-blind Schnorr PoKfcmp.py

What is not in fcmp_pp and where it lives

Two things the proof depends on are located in another field of the transaction: the amount pseudo-outputs C~ sit in rctsig_prunable.pseudoOuts and the key images L sit in each vin. For this transaction, we have:

valuelives in32 bytes
L=xHp(O) vin[0].k_image 80e251c490c65c224a758c2caab46291ffe5d994232079ea37e3806ef2876584
C~ pseudoOuts[0] 454e867009aef302815597139182d3b8123f57c3e09cd6ac724c4e7c9fe59d49

How the transaction scales

The table below gives the size of fcmp_pp, in bytes, for 1, 2, 4, 8, 16, 32, 64 and 128 inputs, broken down by region, so we can see both what each part contributes and how the whole thing scales:

inputsc1 / c2 IPA roundstuple+SALC Selene BPHelios BPPoK totalBytes / input
116 / 158 / 7480992246423046463046304
219 / 179 / 89601152281625606475523776
425 / 2110 / 919201472345630086499202480
837 / 2911 / 10384021124672384064145281816
1661 / 4512 / 11768033927040544064236161476
32109 / 7713 / 1215360595211712857664416641302
64205 / 14114 / 133072011072209921478464776321213
128397 / 26915 / 1461440213123948827136641494401167.5

Every 32-byte word

The whole proof, all 197 words of 32 bytes, each with its field, its defining formula, and the first and last bytes of each (full hex is in the dump above). Points and scalars are both 32 bytes.

word · bytesfieldequationbytes
input 0 · tuple + SAL
w0 · 0–31O~pointO~=xG+yTf71b2aa4…74f5fe50
w1 · 32–63I~pointI~=I+riU51448a0c…3fb0b650
w2 · 64–95RpointR=riV+rriT35c61ff5…2d310476
w3 · 96–127PpointP=xG+riV+xriU+rpT1924f4e4…abf1ac30
w4 · 128–159ApointA=αG+βV+(αri+βx)U+δT0ac37f5e…945537c8
w5 · 160–191BpointB=αβU+μTdd1286b0…fc118c30
w6 · 192–223ROpointRO=αG+ryT7b9f1acb…f39c24a7
w7 · 224–255RPpointRP=rzU+rrpT9a2871b0…2f41d7fc
w8 · 256–287RLpointRL=αI~rzU6e930a71…a2607ddd
w9 · 288–319sαscalarsα=α+ex5d6fc8d3…6338b50c
w10 · 320–351sβscalarsβ=β+eria54b6199…938e1e01
w11 · 352–383sδscalarsδ=μ+eδ+rpe2b015b0d4…ee10af01
w12 · 384–415syscalarsy=ry+ey5b930f61…05a6880b
w13 · 416–447szscalarsz=rz+exric40b21d9…dcd46b0b
w14 · 448–479srpscalarsrp=rrp+e(rpyrri)1c764745…c1199c0b
vector commitments C on Selene: C0 leaf floor, C1 floor 2, C2 floor 4, C3–C4 input 0: o_blind on T, C5–C6 input 0: i_blind on U, C7 input 0: i_blind on V (divisor only), C8–C9 input 0: i_blind_blind on T, C10–C11 input 0: c_blind on G, C12–C13 opens the blind of Helios C0, C14–C15 opens the blind of Helios C1
w15 · 480–511C0pointCi=j<nivjGjsiH9be834bc…8d357f59
w16 · 512–543C1pointCi=j<nivjGjsiH4b2c2c10…761569a0
w17 · 544–575C2pointCi=j<nivjGjsiH9e3e52d0…d84e4d67
w18 · 576–607C3pointCi=jvjGj+biH1872afe8…2dcfc150
w19 · 608–639C4pointCi=jvjGj+biH84abce2a…fdf2346e
w20 · 640–671C5pointCi=jvjGj+biH0bdf9f2c…50299620
w21 · 672–703C6pointCi=jvjGj+biHe20b08f5…7b1bce4e
w22 · 704–735C7pointCi=jvjGj+biH18127abf…8b9f141e
w23 · 736–767C8pointCi=jvjGj+biHc939be97…9fe58778
w24 · 768–799C9pointCi=jvjGj+biH4d2eedec…b6c24dc4
w25 · 800–831C10pointCi=jvjGj+biHbea608e8…b0ad5232
w26 · 832–863C11pointCi=jvjGj+biH6d97f8a5…88d0cb8d
w27 · 864–895C12pointCi=jvjGj+biHe6f89a71…85a7a8ec
w28 · 896–927C13pointCi=jvjGj+biH240a3660…f21b4c43
w29 · 928–959C14pointCi=jvjGj+biH351bdcc0…2224b9e2
w30 · 960–991C15pointCi=jvjGj+biH1b2491d1…91f453e8
vector commitments C on Helios: C0 floor 1, C1 floor 3, C2 the root, C3–C6 opens the blind of Selene C0, C7–C10 opens the blind of Selene C1, C11–C14 opens the blind of Selene C2
w31 · 992–1023C0pointCi=j<nivjGjsiHc98b1633…ff98af4e
w32 · 1024–1055C1pointCi=j<nivjGjsiHd708ab3d…8cc00a16
w33 · 1056–1087C2pointCi=j<nivjGj+brootH7ed1879c…1bc8bb4b
w34 · 1088–1119C3pointCi=jvjGj+biH1ed2b0a9…cd2128b4
w35 · 1120–1151C4pointCi=jvjGj+biH5b77613b…0f3e7626
w36 · 1152–1183C5pointCi=jvjGj+biHfec7cdd4…45d0a3f6
w37 · 1184–1215C6pointCi=jvjGj+biH94c5c849…9b2bae53
w38 · 1216–1247C7pointCi=jvjGj+biHb0fc067f…993eeca1
w39 · 1248–1279C8pointCi=jvjGj+biH2410a6cf…de01dd05
w40 · 1280–1311C9pointCi=jvjGj+biH8ce8a81a…91c3f672
w41 · 1312–1343C10pointCi=jvjGj+biH772a7f27…93ec38ae
w42 · 1344–1375C11pointCi=jvjGj+biH70748e62…5e13ec63
w43 · 1376–1407C12pointCi=jvjGj+biHe35bb545…6dae5fe1
w44 · 1408–1439C13pointCi=jvjGj+biH7c3ac016…92f71ab5
w45 · 1440–1471C14pointCi=jvjGj+biHb68e24c4…17cf00b5
Selene (C1) Bulletproof
w46 · 1472–1503AIpointAI=aL,G+aR,H+αhd8ca6ec7…56b03279
w47 · 1504–1535AOpointAO=aO,G+βh84d7f1d2…312e333d
w48 · 1536–1567SpointS=sL,G+sR,H+ρh3b2410ad…4699f40d
w49 · 1568–1599T0pointTj=tjg+τjh299861cc…99b50907
w50 · 1600–1631T1pointTj=tjg+τjh498f6794…efec651c
w51 · 1632–1663T2pointTj=tjg+τjhcf24a83f…c4360fac
w52 · 1664–1695T3pointTj=tjg+τjh88e33db2…68223d3c
w53 · 1696–1727T4pointTj=tjg+τjh70b8d76a…9bb97073
w54 · 1728–1759T5pointTj=tjg+τjh3ecdb941…73ea7824
w55 · 1760–1791T6pointTj=tjg+τjhf16ed075…9dead082
w56 · 1792–1823T7pointTj=tjg+τjh8edaa0c9…a4a6232e
w57 · 1824–1855T8pointTj=tjg+τjhe44f1cc8…1e13d222
w58 · 1856–1887T9pointTj=tjg+τjh142715b2…8ddcda7c
w59 · 1888–1919T10pointTj=tjg+τjh00eb71a0…539cf112
w60 · 1920–1951T11pointTj=tjg+τjh183e4113…7f2e1517
w61 · 1952–1983T12pointTj=tjg+τjh35c8de34…f89113da
w62 · 1984–2015T13pointTj=tjg+τjh3f4ded2f…c9850e88
w63 · 2016–2047T14pointTj=tjg+τjh5973b4cc…b56357ff
w64 · 2048–2079T15pointTj=tjg+τjh4c45f6bf…66a9a52e
w65 · 2080–2111T16pointTj=tjg+τjh21d41fb7…359be8b2
w66 · 2112–2143T17pointTj=tjg+τjh4e67244a…89ec7619
w67 · 2144–2175T18pointTj=tjg+τjh5b0e8d7b…86ae9756
w68 · 2176–2207T19pointTj=tjg+τjhb16cf724…d12ea31d
w69 · 2208–2239T20pointTj=tjg+τjhc8aa3c4a…0bbeb2de
w70 · 2240–2271T21pointTj=tjg+τjhe8ce7ef2…4569c4fb
w71 · 2272–2303T22pointTj=tjg+τjh1a2620ea…54e6cbf5
w72 · 2304–2335T23pointTj=tjg+τjha0e773f6…59ee4bb9
w73 · 2336–2367T24pointTj=tjg+τjhc77d88c2…aab4282e
w74 · 2368–2399T25pointTj=tjg+τjhd9f1e357…065a39e2
w75 · 2400–2431T26pointTj=tjg+τjh24220775…2523efea
w76 · 2432–2463T27pointTj=tjg+τjhe80be3fa…1facfe6e
w77 · 2464–2495T28pointTj=tjg+τjhb722c0bd…3ae0dc8c
w78 · 2496–2527T29pointTj=tjg+τjha3a7a2cc…bc2f8fd9
w79 · 2528–2559T30pointTj=tjg+τjh37790974…4a7d203f
w80 · 2560–2591T31pointTj=tjg+τjh4cf7ec76…3868e119
w81 · 2592–2623T32pointTj=tjg+τjhe14fc975…daf06023
w82 · 2624–2655T33pointTj=tjg+τjhbc22dacd…f29464c0
w83 · 2656–2687T34pointTj=tjg+τjh8c62dbf4…11bc02a2
w84 · 2688–2719T35pointTj=tjg+τjh142f3612…005aa4c4
w85 · 2720–2751T36pointTj=tjg+τjh2fd12dd3…fa5de2ed
w86 · 2752–2783T37pointTj=tjg+τjhd8ec1b85…95be28e1
w87 · 2784–2815T38pointTj=tjg+τjhbb847113…c97faf20
w88 · 2816–2847T39pointTj=tjg+τjh5aa8a95d…f2717423
w89 · 2848–2879T40pointTj=tjg+τjh1bd86beb…0832b767
w90 · 2880–2911T41pointTj=tjg+τjhaa7a2a77…04b8438a
w91 · 2912–2943T42pointTj=tjg+τjh05659f8e…911abbdd
w92 · 2944–2975T43pointTj=tjg+τjhd800f56a…f07e035d
w93 · 2976–3007T44pointTj=tjg+τjhcbb9def8…7158aef3
w94 · 3008–3039T45pointTj=tjg+τjh97016421…f1bc262c
w95 · 3040–3071T46pointTj=tjg+τjh2f5a05ec…8c5bddf9
w96 · 3072–3103T47pointTj=tjg+τjhb3f218c7…b7c7831d
w97 · 3104–3135T48pointTj=tjg+τjhf4e71971…7242d242
w98 · 3136–3167T49pointTj=tjg+τjh565c27e9…31da22ce
w99 · 3168–3199T50pointTj=tjg+τjh18f32841…08d68493
w100 · 3200–3231T51pointTj=tjg+τjh774a32cf…425733e2
w101 · 3232–3263T52pointTj=tjg+τjh3d37190f…75645b0a
w102 · 3264–3295τxscalarτx=jτjxj41eef7a2…b57f2029
w103 · 3296–3327uscalaru=αxc+1+βxn+ρxn+1+iμixn1i29c36735…ca783467
w104 · 3328–3359t^scalart^=l,r4f210549…483e3323
w105 · 3360–3391L0pointL=a1,G2+b2,H1+a1,b2U40d1a668…effe83b1
w106 · 3392–3423R0pointR=a2,G1+b1,H2+a2,b1U6e4b4068…958386f9
w107 · 3424–3455L1pointL=a1,G2+b2,H1+a1,b2Ub582e8ef…19e3052f
w108 · 3456–3487R1pointR=a2,G1+b1,H2+a2,b1U64cbd322…7358bc34
w109 · 3488–3519L2pointL=a1,G2+b2,H1+a1,b2U924d4e04…d28e4dda
w110 · 3520–3551R2pointR=a2,G1+b1,H2+a2,b1U519ef1db…3274a68d
w111 · 3552–3583L3pointL=a1,G2+b2,H1+a1,b2Ucd99c020…3e22574f
w112 · 3584–3615R3pointR=a2,G1+b1,H2+a2,b1U26f8b9ff…3b03d5f2
w113 · 3616–3647L4pointL=a1,G2+b2,H1+a1,b2U5b252bf6…9931e796
w114 · 3648–3679R4pointR=a2,G1+b1,H2+a2,b1Ud7229d53…f6b3be80
w115 · 3680–3711L5pointL=a1,G2+b2,H1+a1,b2U51e6f7e6…72831bdf
w116 · 3712–3743R5pointR=a2,G1+b1,H2+a2,b1U68573891…623d7ed0
w117 · 3744–3775L6pointL=a1,G2+b2,H1+a1,b2U61847c76…078b0686
w118 · 3776–3807R6pointR=a2,G1+b1,H2+a2,b1Uefa01185…dbae4b98
w119 · 3808–3839L7pointL=a1,G2+b2,H1+a1,b2U9fd3d25d…dbe7f132
w120 · 3840–3871R7pointR=a2,G1+b1,H2+a2,b1Udac3ff86…2d77ec80
w121 · 3872–3903ascalara=l66aaf0ef…35741e3d
w122 · 3904–3935bscalarb=r1845c797…7fc45402
Helios (C2) Bulletproof
w123 · 3936–3967AIpointAI=aL,G+aR,H+αh76447122…3d498a0b
w124 · 3968–3999AOpointAO=aO,G+βh4fc25b25…ab9ab3b8
w125 · 4000–4031SpointS=sL,G+sR,H+ρh04d0ef2a…ec5eb187
w126 · 4032–4063T0pointTj=tjg+τjhe52f758b…1fc72f9e
w127 · 4064–4095T1pointTj=tjg+τjhb0218f00…f9e4698f
w128 · 4096–4127T2pointTj=tjg+τjh1e311a4a…e2f8a4f1
w129 · 4128–4159T3pointTj=tjg+τjh41e8e1ed…e769eda1
w130 · 4160–4191T4pointTj=tjg+τjhcdca3f71…543752b0
w131 · 4192–4223T5pointTj=tjg+τjh3cd80389…7cf0361d
w132 · 4224–4255T6pointTj=tjg+τjh5c814e08…c6c59170
w133 · 4256–4287T7pointTj=tjg+τjh3ab9cb06…fb45b99b
w134 · 4288–4319T8pointTj=tjg+τjh55d503a7…2f3b043e
w135 · 4320–4351T9pointTj=tjg+τjhdcbf6aab…640a33f2
w136 · 4352–4383T10pointTj=tjg+τjhcb74ebde…b88bcfd1
w137 · 4384–4415T11pointTj=tjg+τjhd812ca67…4b51c6df
w138 · 4416–4447T12pointTj=tjg+τjhdf990711…928d8261
w139 · 4448–4479T13pointTj=tjg+τjh5cae22ff…c4bf1032
w140 · 4480–4511T14pointTj=tjg+τjh48085f24…47b44ee2
w141 · 4512–4543T15pointTj=tjg+τjh2ab40a56…a346bc9a
w142 · 4544–4575T16pointTj=tjg+τjh39b327b5…e3f265cb
w143 · 4576–4607T17pointTj=tjg+τjh62e1fccb…f02a0cbe
w144 · 4608–4639T18pointTj=tjg+τjh11095751…67d6ca65
w145 · 4640–4671T19pointTj=tjg+τjh58634080…07bb0af3
w146 · 4672–4703T20pointTj=tjg+τjh7595882a…cffb45eb
w147 · 4704–4735T21pointTj=tjg+τjhd8d277b6…cf91e24d
w148 · 4736–4767T22pointTj=tjg+τjhedfe64cb…a9084224
w149 · 4768–4799T23pointTj=tjg+τjh498606a5…02e6bdf4
w150 · 4800–4831T24pointTj=tjg+τjhb7d115ed…297f9c03
w151 · 4832–4863T25pointTj=tjg+τjhe0380e3c…e17c0f43
w152 · 4864–4895T26pointTj=tjg+τjhe03fe1ad…dcd07be0
w153 · 4896–4927T27pointTj=tjg+τjhd435a2b5…231ce9fb
w154 · 4928–4959T28pointTj=tjg+τjhc1f528cd…2e6901b6
w155 · 4960–4991T29pointTj=tjg+τjh6b036ad9…82f301b6
w156 · 4992–5023T30pointTj=tjg+τjhc364c08e…4324880f
w157 · 5024–5055T31pointTj=tjg+τjhbddff62d…5613e980
w158 · 5056–5087T32pointTj=tjg+τjh6bea324e…937b9ca8
w159 · 5088–5119T33pointTj=tjg+τjh8780fbe4…922423c9
w160 · 5120–5151T34pointTj=tjg+τjh4086e4b3…a0e2d0ed
w161 · 5152–5183T35pointTj=tjg+τjhda6a66f6…7233fe09
w162 · 5184–5215T36pointTj=tjg+τjh80e68547…98c23040
w163 · 5216–5247T37pointTj=tjg+τjh6ed8527d…263ebd6f
w164 · 5248–5279T38pointTj=tjg+τjhd3d88507…fe1523d9
w165 · 5280–5311T39pointTj=tjg+τjh533ca28d…d5c7687d
w166 · 5312–5343T40pointTj=tjg+τjh1a0a2e47…9e327926
w167 · 5344–5375T41pointTj=tjg+τjh383c3605…e83d5746
w168 · 5376–5407T42pointTj=tjg+τjhaed5658c…5e8da057
w169 · 5408–5439T43pointTj=tjg+τjhbc167b70…04a6f069
w170 · 5440–5471T44pointTj=tjg+τjhe19a9958…59de76bf
w171 · 5472–5503T45pointTj=tjg+τjh0fcead3e…bda24d5d
w172 · 5504–5535T46pointTj=tjg+τjhda3b9aff…8823796a
w173 · 5536–5567T47pointTj=tjg+τjh0b5db31c…595ce4c9
w174 · 5568–5599T48pointTj=tjg+τjh00cd032c…73e701ba
w175 · 5600–5631T49pointTj=tjg+τjh667b316c…2d479924
w176 · 5632–5663τxscalarτx=jτjxj85f3477f…1b345932
w177 · 5664–5695uscalaru=αxc+1+βxn+ρxn+1+iμixn1i62a0b528…89005f3a
w178 · 5696–5727t^scalart^=l,r7a0511c9…1dd51b05
w179 · 5728–5759L0pointL=a1,G2+b2,H1+a1,b2U01c75675…c1324dbd
w180 · 5760–5791R0pointR=a2,G1+b1,H2+a2,b1U57df3ce8…12319064
w181 · 5792–5823L1pointL=a1,G2+b2,H1+a1,b2U6211ddfd…f6dd61bf
w182 · 5824–5855R1pointR=a2,G1+b1,H2+a2,b1U4c68e191…1e47ec15
w183 · 5856–5887L2pointL=a1,G2+b2,H1+a1,b2U11988062…27a8b6e2
w184 · 5888–5919R2pointR=a2,G1+b1,H2+a2,b1U20a0574a…f3e430fc
w185 · 5920–5951L3pointL=a1,G2+b2,H1+a1,b2U04e16b30…c978179f
w186 · 5952–5983R3pointR=a2,G1+b1,H2+a2,b1Ue96cf679…ff0e6c9f
w187 · 5984–6015L4pointL=a1,G2+b2,H1+a1,b2U65df6a6c…b995ffc2
w188 · 6016–6047R4pointR=a2,G1+b1,H2+a2,b1U1b5b4a3d…12a8d450
w189 · 6048–6079L5pointL=a1,G2+b2,H1+a1,b2U993e33dd…c5bc6918
w190 · 6080–6111R5pointR=a2,G1+b1,H2+a2,b1U13e49fe4…91ced441
w191 · 6112–6143L6pointL=a1,G2+b2,H1+a1,b2Uf3ab91a4…fa194cf8
w192 · 6144–6175R6pointR=a2,G1+b1,H2+a2,b1U92091733…754e4de3
w193 · 6176–6207ascalara=lff88c4b7…bd00e111
w194 · 6208–6239bscalarb=rc73b3146…6e307c54
root anchor
w195 · 6240–6271RpokpointRpok=rH0ddbf0f7…99fce08e
w196 · 6272–6303sscalars=r+cbrootda23ae70…07c69b0d