Browse Source

Add BatchContribution parsers & real json test

main
arnaucube 1 year ago
parent
commit
4e63df155a
3 changed files with 219 additions and 0 deletions
  1. +133
    -0
      batch_contribution_10.json
  2. +67
    -0
      parsers.go
  3. +19
    -0
      powersoftau_test.go

+ 133
- 0
batch_contribution_10.json

@ -0,0 +1,133 @@
{
"contributions": [
{
"numG1Powers": 10,
"numG2Powers": 10,
"powersOfTau": {
"G1Powers": [
"0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb",
"0xa378067a893ead4127dea9611d8532730f837243d8ccf2cd2c0627192f98dbaffd93745025eaac982f5c356ffafc982d",
"0xa40a639ed3268a745ba5e3663e53ac317407a50e4703cfdbdcad1e9ad9971ca70f0128c3cf632c06eace5c95b563d1b3",
"0x943641efd6c96c6daf2e48490c6cd9ee10289e11a9b1116787952d331857a7375f44b0d9410d0255ae12c8bc9d6897b9",
"0xa83c9b16eda2ae02ab0549b21ea9530ae0abfc83674a84ab15bcbf2dfcfbcbc99ac616aff28b2b8fb8e43cd6e4a14698",
"0x93a934da1d12865186e265fbd80eb446ecf0a8e4eba85f7cbfd1e1aa33fad0176116f3e97e803eb7e757952a25571912",
"0x906089f0089fd56d76ec450506c888ae5219e0d77bbde594d7f05a0d384f6efbf7720117d8cd06568d3dc24aad4a2b5c",
"0xa8adfda4341f10d511cca71f6166d947e080a3cc203712e107800bd20b27d091d602ebc1ffde650f7fde5cd332951114",
"0x9405c3ac15ccef48e621291a1311df0166da2ec96ab5f7ef554853f48875b99f34be84f7c7acfe5bb1c1b5f9a25f0d73",
"0xa2096447d14f03d0fcd53f287aa31e68695ea10b79119c7194b467b6acceb85b49eb15052fa2d25bee18b1ca92eacae9"
],
"G2Powers": [
"0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8",
"0x89950d84e988c5610ae8fe1ed16d51959a3cdc0c373dd550e09aa4f9e0c97e477e2a65dd42c625d79b3e43ea3581edf21133cf5292082ee7c0e25752ef404d2219cd92d35216c52bc12fb58072d5fb0158b0ceef9da6d393a6a4031e4f7d46fe",
"0x92c0be5b7c501522413447aa5024807148cecf7b66c6d0d3cd3936d0f4a6a85975652b4c1d29b78a6c6735a987b20b8016dd8d94f3a842ff310496847e1031837931a04445593b3d571ce737bd270dc7ea57c5a58c5e3124179424f842d8f023",
"0x8d3975485ca4b7a1ca3b963b5b854f5f4b210e0145124905527f4368dc867d6d699ef7ab5d0add0946d5659ba841394e0205710907e4c5dc35745b9707e74df8384703d94587ddd7299d25ae617c630cc73810f5719d4babb932219134844303",
"0x998f30802c63722860011abfe563619f2d183a5efb391284426f76f0acf84dbaa14f95b24d18bbb535a3634d7f2c4b810feb9875118a34b60254b014e84b994e914a34b07f32dcbecd3a0cf5db238626444f1b1492a97072dd900cde0a5aaaf1",
"0x92457a369881136ea44f4d78bee5ef565a72688ce810b227d9639461ff1334e6037ac8a8887878987fb65b4e95cd81ef04f9d6267094d5444e968ad6387d13c7db8099281696e08576366bacb70079566c4ed9521d6a1517066c91fdb01582f1",
"0x9424eb8c24e722a5892b3db0bdf585fcffb3c583c18260fe592b43a37a01a2111300804b54bcbf802cc0fb7aadf5bf461873453c0cdd143774dc9a7d7df7a77182165797f0bf25f1de9071ff373572bef4a68f07b4fb8e66efd31f1a26dc69dc",
"0x9067edc923a97aa859f88478b9251ccec92d57d60374067a4830778c86e848827e61f65c70f253242dd29f630de030a214bc93aef41af4c77f72a0b7511647c61d87d06b8ba1a0a8525bbf4b05f27b34828a257da587376be8553bb763327dfc",
"0xab336817d7c5cd1bcbb32b40c593f61c6426cf9645cb0d7de8364c984d898d3fc2aec7bcc90149828714fc041b9fd71513f7375873af5947387027da4f1ff9227048a6db9f2754430453db242ce4b2c62743acfad419e376e425b64571fd7c1d",
"0x81e0d34d9acc47508d2c9220d746935eb13feb3751a9c59967ed3aabe577aa37ec9c86d43a0d87c78d1f93dfa5c7b2f3005e683513f93aa4c6a617db5f8c716dd07040736e193bad1e6684bb5cb805e5b168e22a96e263d0ea8042addcc39865"
]
},
"potPubkey": "0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8",
"blsSignature": ""
},
{
"numG1Powers": 10,
"numG2Powers": 10,
"powersOfTau": {
"G1Powers": [
"0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb",
"0xb216c2f01f61edf6a61e88cb2bbc5e14c5b887a48cf39d5e807cdf6c74c1ddfafc807fa491c6d7dc49cac4c58910f152",
"0x8d99ac362d842d82f8bd77c013995f3bc6800e6497a52495c4ec899bf2a95250513ae06216ce797e0071770371c11e30",
"0xa31e068bc6837ef7477e3976a0cb2b518a5b59440e4be19a95b271e2397d9884eb2cab0be2b741bd12132bb1c9accbd7",
"0xb108b7e8d22a5c567442374121712d1a271b0d93930b8943d74f3e0c2e07833b42cb353c03bfedbd75850dec448daa9d",
"0xa17b9068308a830df358a3f488cda2b2745280830b8d24cde0d5d9245f48567461aa41709c76b294ef99a0b2f43b2899",
"0xa440e5bf3c63067062ecd37927a6215083f60daf3d6608b0745b1b04702ec99a374dcc900069275c545c75afa5ad9a7f",
"0xb82994ca41e784bff93553952d3ee9ccc470cde88ef2ad467d7aff86484f676b7e014ab1a99208b58b18a7f4d6f8bd9d",
"0xb783a5d704f8eff2b826908683536164fdfca880090ea1b0dd72d6ccb3f29c236a95883eb3ac227ed0f8ea6945db1f9d",
"0x85d6e4fac198239db9d381e5d9ae6036143b2e8023d0cc25aaace2933f9689736c54c4369f7a1b788aa04c3f327dbcd8"
],
"G2Powers": [
"0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8",
"0x81e2a9d9fc4c8f9475e806228396808a1c30591463b29b8b1dd3c73721f078d2f4853000a57a7e932aa8ba47e73c95fe1014e51a6943b2b5f6d7d5744cbe1907bbf3a530ef69b203ef810f3fd6a1981300f5e0565fb11de6579e6c4126a36ed6",
"0x87a9490bb010a56b26309568335d82322a9b9904f6dbad73f768dfc50116f07337f8154301c5a2342608d2227c684f4e01280f2fbf55d9ff55ca6ec61bd9c415bde4a6f60c1c46db56a2735a266da292afe4020da4b24a9aa748e6e3c03844ae",
"0x96aab105676ea9a12345e03543c5b190f11e478bf509cdeacb0d0fa1be0741a5addf3fef1b9873461fc4e89377ac320305f6b56bc6a8cc2888cd264529f587781600a84d189fcff2b976d6d484cf6ef2f64654fc5a79921c091be6c2c3d718dd",
"0xa0032c8f32327fb501efd344ca33c5376a646a090e19257e195207c52a92a00b07219803d3ddb272921d4051ab900b3b1864c9e7a848e39b2b4fff7921c4c5cf0b05cae21cf1faebb33935a5b0422d6ecb2712355e974b9e7c61c60147e01608",
"0xa99867eb5be2e78bfdb570e8d711e877f91fd50224ec4267d02531a1c6b953cf60fbf854c7b32b7d27188a73d83d9f12063e6d2e5d29bdacb225d45611e9f039bc9e1bf890ac4874ec2f135c8bc3f7028dd4c20864ca3b49844b7d1e5c0aaea6",
"0x93e5c51625a0d6a567d214bfc59bebb48afb44c06c37e27076f0316ec0e4cfc911be16c1761639a1a507f866e6585d500e624368552dcca286baa000cf314165c710166214d9622e0c6996e4899edd1efe5b3edde073d001174f7149db2bccdd",
"0x9649c3ba60f63811bb3b8afed0bec607e701f2668b154c78b82782b78bc0202f17506dac9e787aadc6b43579f0788e2010b57b39d685075231d9a50f2fc53da66e1ea9f82373493b91723b06acf696457603624bff9f1059b0c3c211254d78e8",
"0xb6650f4dce8b165a240eb337155af576b745bbf48b10ce1c5e4797cf5ac59d43756e46a7352278d9526c4e84d4cfa42b05215cd2caf93b041331bbfa8bee713851cf75a426ee0bc292bd61e090f6ac95fe7b3ce981023f7e2b44128355cf04bf",
"0x8edc430fd61190405aef500e824656aa7a9169274f8d3f72e5c21d06b1c4ddba7a3669c8866aec614810d44f6af24029060c1f8bf116fe62a995b825b751b80f8f5f584640b9b3043340268d6f0b624491491728639b855f2d9cc0831fbecc6f"
]
},
"potPubkey": "0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8",
"blsSignature": ""
},
{
"numG1Powers": 10,
"numG2Powers": 10,
"powersOfTau": {
"G1Powers": [
"0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb",
"0xb3e708190251b0e11bcf5549014d1a2812d200ed036ce517648662637cf3484b949a96fddb76d13476dfbdd0840e8316",
"0x8929b0375ca1f6197495d7de124ff19ce7b968b90a823017545a8afcc5e34eafbd27cdec5cc228dea7ca0ddc801c3343",
"0xa15ddff4b80bedcb9d5274cfdc95ff4e66a35106b92f8d1385958ec5546afb918f48a895fa7999a2f950925b159839d3",
"0x8b8637a0a1cc3b54b888c1952f9155e4a29f16a61fd3fde0ddb3afc03e50bb771626cf86ab099d3968fbfc91a72c6f13",
"0x980e3af09cf0ac274f71f6863bd3e0c2b37ab72eabc02da7095d139440c262c622dc220c9ab5d86c8069f1086e6437fd",
"0x82fa86ed657ccc999e11dbf9fece38e4e7fecf21244dde6fb4030bdc2b4db5314b6317467a0370258dd00daf28edd31e",
"0x8bb91d884671c787ff6e4e7a999e8323c9493673d99b05c6d209719d950420019e28ae54abb9196514c6c90e3a5612c2",
"0x8e4052fe5ba5589876b2252bdaae8d9ee259750de894154eafd373c0559d8e88a03baf1fea074088e52b5b8b09689fda",
"0x8dc3ad6f0f25a57447f6abab721361b7aa0ef7b2fe055cefcc0ea409ef312e41509370390514c39298e445393b0697c4"
],
"G2Powers": [
"0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8",
"0xb8877c50de7aa1fbf9cd9e8a6b468fe94e76e3363adc0d6e956b9671ba7d2fe663ff6147980a32c689d1070e664d2c440c5ae2e51ef0cf19856d5d094a1cd54dbd47c5a046fad39c601a18b88ab730642942ad269dacee247e22a05cd4b8fbab",
"0xb4ea75672d837d755fcc9c310de79595b558d8aff2f915cb52ef1cf229c1415f960834de0a206e33c26699aff5d50d4f0ff21bd3d390e06ab4b164840659eaf8873d81749b5ed8d39692ebc89075fe60c2372c583afda5c918952d9ba6f2e6f3",
"0xb380437c3bc443a90c67620cb2fe83f8bc33e5197ef4e73926768beddf5acf396eea6be87f230732738ffb8c16fb2cd800a8600f00840c4cb11831067c5b8a733f8853c81d6f3c5eedbd43d8b44fb01f01159aa12c0634627201175dfa66cf0e",
"0x946d5485b3ffa7e4cd59df9d00eaccd615c12dec5eaa6eae3bf72b593fd0c3ab7253417602033f34ac08dc3aa43387a4186b7c3a027f4b16e70e2930f378c97f62a05d7230778a3bdd0c2fa0f68324694e6096d9911a0374ba649436a3f76761",
"0xad5711d49b16efa6bd4fec2885f220834320a6eae725b9a63dabd1d93e7630dcf2c1390d8d0181ca4a3e610d23d7671a04e0c921b6cdf9b91ffcfce0788cac787ab35bc6f8ffc17eb1a61c2646bdd7acfb3769eed35a04ef45a23bd19648d21c",
"0xadd58a76c724b1c61fe975987c4cdb0b41fbf7d7e1436b36a55e707030e4e35a82cce934f9aa94460594f4acbfe674a61354ab8cf531856bb057000e7ef01b827db3c81f588f1f9575c21d929eed8ddc9bcad9e40a8782b00ffbc294b117f367",
"0xb45d2dda500770513c041236ca0f30d6e73a587f3e1c4b6d52f8851f191919313ec85dadac979661d5ab40dec599aa2e06d333f9695038cbeb04bd74f29884be7d4d0117ff8435c229c1cc34d20560fb51fb3256ab7fea77409fada36adcb908",
"0xa99c56379676f007082e7300b192e5a1f42ed7adcfcadebf18ddbe4d4347d1a2fe2f325be214028056a754e16017bc2e0faa623bc8d398fd8b65a7eb4f86ced7d8704e06c29bc96c5a6753725b63f5e57d8502170d76a917fd8d587d11007932",
"0x9848c398bfcc8c5576bdf32546c2731ccd1e3586ff495cb0320e249474446df9123b1b3fa6692fa87869980551fb7591132a7af9307f1e616a24c32a0e0dd52470681338bae86c032c61d8b174d4f83f3117080c57cc176e84a1dfbf9215aec1"
]
},
"potPubkey": "0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8",
"blsSignature": ""
},
{
"numG1Powers": 10,
"numG2Powers": 10,
"powersOfTau": {
"G1Powers": [
"0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb",
"0xb89b846261102f9e385e63c89f9ff3c71d2b1e0d90a14d402d5a5f6b915c4b90d3530d0f28b6a549a212b5aba8ec9072",
"0xad5b525e5763680513c71cf44ca4fd618d049439168c744183a03ff40a2c2fe6a4654d7cd334e7f576c4b3c3dc2dbcb8",
"0xb1cb2f21e1f85c140eac4140ee08999a0b62bb343038d6e0444e3cb3fb511767fa4b48700a470869c54def52f25c8e6d",
"0xa7e5cb7c1fa5faa93aadbb912d041ba64d587b815cb900b12440e5391590e17cd5b1102bc67049286a9a88280d8b572f",
"0x824323c4e30c0ac13f674bfbdfdca0c2a01c1cbec19616c192a8f8e6a3f4359c041f4c2583da711cb35047255b59e804",
"0xa9afe5db70a0fbf476a60afdd473f0dce8613564386fe431285c1b9e9cca0c4c1b6a0a2860fe7d9c68c07616eaac15a7",
"0x9926c14d88631bc72ec3f1511bdf7b9ab4e7d4a869da6e6672f47bf13ba10e7000ac6598d82ee647d29831755f798aa7",
"0xb68bc3aaadcfcd71836b9cbf40d06ff4b313ed3ef30771be36455e7fca9cfa1f0942d309d166043dcd4de2c431017580",
"0x8e9421e5155f7a411409588bb880fac5ec89e8e489b5f92e226c472ec440fbc1960806ea06cbfbd963aa0491b554c90c"
],
"G2Powers": [
"0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8",
"0xb2cc2cfe5fcf7b23eeb066bc4655a934f39ffd70999cc02eacafc7709f90c33f2a0f8749e5dc20c705058660877c139501eb607997d7487abb210faef4b3e9460981d7168a84a2be5c7d044b5200fa0883c88a963f83c9f59ac53bb94507d35a",
"0xa16a79ffb866a4cda1be0439f9b395f0f262eba841562bd8adf7c75a36ac5f4c3158d95b292e97092893b12505458b471200cd054ea543cee18b3d6b99409d808e50c4622fe7d6cfa11254c3a749dbe3e3ef94c5d9e3c8e4f105e2ba635b86b0",
"0x85a15ee55547645c1eb626e4746d51fa28a66685a05a8cd00c4aee048efc48bfde2082eb2c633d5a558bbdf5783bc61f0cd82b787363d63cca13c570b2dd7a31ab1d5f6b861d8e1907fc2216bbb315eac18d6a0ef30692e86126026d04f090e3",
"0xa4a89464fbf75fb83f55412a8f390785e61fdf3b1bc1c21745e818697f25605b55352e17e55dce17fcdf043a1b2da75c19682aa91aef5a35ddd280bc8d0fe51d5688171d8a738cfde753e594159ce12e1f2b5ce83316ff09327b279a922a08fb",
"0x89e3644909f5df88512e2b34449583f9f37b1250694f49dd417e45e42642263d74ff85ad79cc0c3a07154d18225188210dd915bb19ff857a791cd7154015ea10df3892bd614e94efb2fb6b65583e26e5e5ba90b2ddce1cba56331c80710a9b53",
"0x89628be321e85a9a77beccc6c59aea23d4e2b68e43b4f9f41600393fae6c932917b8d17de1730f2aec54874172fcd5ff035d08fe0240c9ec16dcb46cafe1d20251545e133bde0e6e7bde62eb01faa9a756c67782cd120ee6f72a84315c62f878",
"0xb30ca64bc7fd010aef1b0313c581e9a60a4f58f988214e54f66934b2edd75b1a4bd4844907375349be5c02e3f386850d0c7f1418e84cbd55befb3bd954b4fd2872203241b1add8c8632dcb909801515edc2596760b9eb8ca4a0a527d78b24946",
"0x94db78262b12066c5ce020ee3568d3135d9a8956736c9e22db69edd328bcb3a84a7284ac8ed42a4968096c55b132266505ddaad15503543778742891c68a2d11915cc60d0470259f3679d0060ac545f7be819946b750f0720841616470589a56",
"0xb9f927add3577acc6ee09d98b94836d4d7a09a466d33a73514214938c2fd9f50d063583656b4e1c5ac50c925c17c7bda007dcbddaa5eb714eb23cbc8ccbaf9fa4d4ba45ebc38be1f2d6fb1d95a7eda330ed5f9cc658d6c22a4f7aee7581cce4e"
]
},
"potPubkey": "0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8",
"blsSignature": ""
}
],
"ecdsaSignature": ""
}

+ 67
- 0
parsers.go

@ -57,6 +57,7 @@ func (s *State) UnmarshalJSON(b []byte) error {
return err
}
}
// TODO validate data (G1 & G2 subgroup checks, etc)
return err
}
@ -92,6 +93,61 @@ func (s State) MarshalJSON() ([]byte, error) {
return json.Marshal(sStr)
}
func (c *BatchContribution) UnmarshalJSON(b []byte) error {
var cStr batchContributionStr
if err := json.Unmarshal(b, &cStr); err != nil {
return err
}
var err error
g2 := bls12381.NewG2()
c.Contributions = make([]Contribution, len(cStr.Contributions))
for i := 0; i < len(cStr.Contributions); i++ {
c.Contributions[i].NumG1Powers = cStr.Contributions[i].NumG1Powers
c.Contributions[i].NumG2Powers = cStr.Contributions[i].NumG2Powers
c.Contributions[i].PowersOfTau = &SRS{}
c.Contributions[i].PowersOfTau.G1Powers, err =
stringsToPointsG1(cStr.Contributions[i].PowersOfTau.G1Powers)
if err != nil {
return err
}
c.Contributions[i].PowersOfTau.G2Powers, err =
stringsToPointsG2(cStr.Contributions[i].PowersOfTau.G2Powers)
if err != nil {
return err
}
g2sBytes, err := hex.DecodeString(strings.TrimPrefix(cStr.Contributions[i].PotPubKey, "0x"))
if err != nil {
return err
}
c.Contributions[i].PotPubKey, err = g2.FromCompressed(g2sBytes)
if err != nil {
return err
}
}
return err
}
func (c BatchContribution) MarshalJSON() ([]byte, error) {
var cStr batchContributionStr
g2 := bls12381.NewG2()
cStr.Contributions = make([]contributionStr, len(c.Contributions))
for i := 0; i < len(c.Contributions); i++ {
cStr.Contributions[i].NumG1Powers = c.Contributions[i].NumG1Powers
cStr.Contributions[i].NumG2Powers = c.Contributions[i].NumG2Powers
cStr.Contributions[i].PowersOfTau = powersOfTauStr{}
cStr.Contributions[i].PowersOfTau.G1Powers =
g1PointsToStrings(c.Contributions[i].PowersOfTau.G1Powers)
cStr.Contributions[i].PowersOfTau.G2Powers =
g2PointsToStrings(c.Contributions[i].PowersOfTau.G2Powers)
cStr.Contributions[i].PotPubKey = "0x" + hex.EncodeToString(g2.ToCompressed(c.Contributions[i].PotPubKey))
}
return json.Marshal(cStr)
}
type powersOfTauStr struct {
G1Powers []string `json:"G1Powers"`
G2Powers []string `json:"G2Powers"`
@ -110,6 +166,17 @@ type transcriptStr struct {
Witness witnessStr `json:"witness"`
}
type contributionStr struct {
NumG1Powers uint64 `json:"numG1Powers"`
NumG2Powers uint64 `json:"numG2Powers"`
PowersOfTau powersOfTauStr `json:"powersOfTau"`
PotPubKey string `json:"potPubkey"`
}
type batchContributionStr struct {
Contributions []contributionStr `json:"contributions"`
}
type stateStr struct {
Transcripts []transcriptStr `json:"transcripts"`
ParticipantIDs []string `json:"participantIds"`

+ 19
- 0
powersoftau_test.go

@ -2,6 +2,7 @@ package kzgceremony
import (
"encoding/json"
"fmt"
"io/ioutil"
"testing"
@ -43,3 +44,21 @@ func TestComputeNewState(t *testing.T) {
err = ioutil.WriteFile("new_state.json", b, 0600)
c.Assert(err, qt.IsNil)
}
func TestBatchContribution(t *testing.T) {
c := qt.New(t)
j, err := ioutil.ReadFile("batch_contribution_10.json")
c.Assert(err, qt.IsNil)
bc := &BatchContribution{}
err = json.Unmarshal(j, bc)
c.Assert(err, qt.IsNil)
nb, err :=
bc.Contribute([]byte("1111111111111111111111111111111111111111111111111111111111111111"))
c.Assert(err, qt.IsNil)
b, err := json.Marshal(nb)
c.Assert(err, qt.IsNil)
fmt.Println(string(b))
}

Loading…
Cancel
Save