Skip to content

Commit

Permalink
try
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastianElvis committed Aug 30, 2024
1 parent fc877bd commit ff2e8ce
Show file tree
Hide file tree
Showing 10 changed files with 159 additions and 136 deletions.
2 changes: 1 addition & 1 deletion datagen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func main() {
utils.GenBTCLightClientFork(mainHeadersLength, mainHeaders[forkHeaderHeight-initialHeaderHeight], testDataPath)
utils.GenBTCLightClientForkMessages(mainHeadersLength, mainHeaders[forkHeaderHeight-initialHeaderHeight], testDataPath)
utils.GenBTCTimestamp(testDataPath)
utils.GenBTCDelegation(testDataPath)
utils.GenBTCDelegationsAndParams(testDataPath)
utils.GenEOTSTestData(testDataPath)
randListInfo, privKey := utils.GenCommitPubRandListMsg(commitPubRandHeight, commitPubRandAmount, pubRandIndex, testDataPath)
utils.GenAddFinalitySig(commitPubRandHeight, pubRandIndex, randListInfo, privKey, testDataPath, 1)
Expand Down
66 changes: 45 additions & 21 deletions datagen/utils/btcstaking.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/babylonlabs-io/babylon/testutil/datagen"
bbn "github.com/babylonlabs-io/babylon/types"
"github.com/babylonlabs-io/babylon/x/btcstaking/types"
"github.com/btcsuite/btcd/btcec/v2"
"github.com/btcsuite/btcd/chaincfg"
"github.com/stretchr/testify/require"
)
Expand All @@ -22,10 +23,44 @@ const (

var net = &chaincfg.RegressionNetParams

func GenBTCDelegation(dir string) {
func GenParams(dir string) ([]*btcec.PrivateKey, uint32) {
r := rand.New(rand.NewSource(time.Now().Unix()))
t := &testing.T{}

// (3, 5) covenant committee
covenantSKs, covenantPKs, err := datagen.GenRandomBTCKeyPairs(r, 5)
require.NoError(t, err)
covenantQuorum := uint32(3)

slashingAddress, err := datagen.GenRandomBTCAddress(r, net)
require.NoError(t, err)

bsParams := &types.Params{
CovenantPks: bbn.NewBIP340PKsFromBTCPKs(covenantPKs),
CovenantQuorum: covenantQuorum,
SlashingAddress: slashingAddress.EncodeAddress(),
}

paramsBytes, err := bsParams.Marshal()
require.NoError(t, err)
paramsPath := filepath.Join(dir, BTCSTAKING_PARAMS_FILENAME)
err = os.WriteFile(paramsPath, paramsBytes, 0644)
require.NoError(t, err)

return covenantSKs, covenantQuorum
}

func GenBTCDelegations(dir string, covenantSKs []*btcec.PrivateKey, covenantQuorum uint32) {
r := rand.New(rand.NewSource(time.Now().Unix()))
t := &testing.T{}

// read params
params, err := os.ReadFile(filepath.Join(dir, BTCSTAKING_PARAMS_FILENAME))
require.NoError(t, err)
bsParams := types.Params{}
err = bsParams.Unmarshal(params)
require.NoError(t, err)

delSK, _, err := datagen.GenRandomBTCKeyPair(r)
require.NoError(t, err)

Expand All @@ -35,29 +70,19 @@ func GenBTCDelegation(dir string) {
require.NoError(t, err)
fpBTCPKs := bbn.NewBIP340PKsFromBTCPKs(fpPKs)

// (3, 5) covenant committee
covenantSKs, covenantPKs, err := datagen.GenRandomBTCKeyPairs(r, 5)
require.NoError(t, err)
covenantQuorum := uint32(3)

stakingTimeBlocks := uint16(5)
stakingValue := int64(2 * 10e8)
slashingAddress, err := datagen.GenRandomBTCAddress(r, net)
require.NoError(t, err)

slashingRate := sdkmath.LegacyNewDecWithPrec(int64(datagen.RandomInt(r, 41)+10), 2)
unbondingTime := uint16(100) + 1
slashingChangeLockTime := unbondingTime

bsParams := &types.Params{
CovenantPks: bbn.NewBIP340PKsFromBTCPKs(covenantPKs),
CovenantQuorum: covenantQuorum,
SlashingAddress: slashingAddress.EncodeAddress(),
}

// only the quorum of signers provided the signatures
covenantSigners := covenantSKs[:covenantQuorum]

covPKs, err := bbn.NewBTCPKsFromBIP340PKs(bsParams.CovenantPks)
require.NoError(t, err)

// construct the BTC delegation with everything
btcDel, err := datagen.GenRandomBTCDelegation(
r,
Expand All @@ -66,9 +91,9 @@ func GenBTCDelegation(dir string) {
fpBTCPKs,
delSK,
covenantSigners,
covenantPKs,
covPKs,
covenantQuorum,
slashingAddress.EncodeAddress(),
bsParams.SlashingAddress,
1000,
uint64(1000+stakingTimeBlocks),
uint64(stakingValue),
Expand All @@ -82,10 +107,9 @@ func GenBTCDelegation(dir string) {
btcDelPath := filepath.Join(dir, BTC_DEL_FILENAME)
err = os.WriteFile(btcDelPath, btcDelBytes, 0644)
require.NoError(t, err)
}

paramsBytes, err := bsParams.Marshal()
require.NoError(t, err)
paramsPath := filepath.Join(dir, BTCSTAKING_PARAMS_FILENAME)
err = os.WriteFile(paramsPath, paramsBytes, 0644)
require.NoError(t, err)
func GenBTCDelegationsAndParams(dir string) {
covenantSKs, covenantQuorum := GenParams(dir)
GenBTCDelegations(dir, covenantSKs, covenantQuorum)
}
200 changes: 100 additions & 100 deletions packages/test-utils/testdata/btc_light_client.dat

Large diffs are not rendered by default.

22 changes: 11 additions & 11 deletions packages/test-utils/testdata/btc_light_client_fork.dat
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@

�
�040000002e6d4df7b0b6687f83852f93a30d9c275515b9fc0bb8a8fdd0fcd53732b4a16c1763eec07c14078f4810e444df3a4a8b35a23e75bf14b45ce12f5144f73fe19687b28653ffff7f20626666e6@6186e1412425593e6f332f4fdba4fe8d7c864225ce6e403526144e89560af767["18446744073709551797
�04000000d2aad530761cf4f1b36f38d313f4709d7851cbb67d05163f65c228103159bb3c64921b2946c1f942737d56f2f92fbd8a752d27738896186e0ded3e4532c4c5d6ddae8653ffff7f20f2ffffef@2b6bb0ba21189a4ecb235fb0fd547e5f30c43a98da0d2a290739bf21dd4a42e3["18446744073709551797
�
�0400000067f70a56894e142635406ece2542867c8dfea4db4f2f336f3e59252441e18661c3b7a8d57fe98869da5cc3b9093beb92a05468def25a50b2353847cc559cebf0a3b38653ffff7f20626666e6@03b73fe75921f51126927209ed331a2341263e8ac3ab3b75402b4b0b9674ca4a\"18446744073709551799
�04000000e3424add21bf3907292a0dda983ac4305f7e54fdb05f23cb4e9a1821bab06b2bb6a805046a40201d03393f6944d9b99e80b2cdcff8551fb93752f9ac5304c627feaf8653ffff7f20f2ffffef@308a5252c3dc7e2188ebf1854f9855bcf519cd1f8c46a3f39e58f7966476b64b\"18446744073709551799
�
�040000004aca74960b4b2b40753babc38a3e2641231a33ed0972922611f52159e73fb70375d1b9bbfa5116bba91d97bdafcb7a2430f6c6b3a0e310fd32bd53a418380836b4b58653ffff7f20636666e6@56068f09870397e3cc06bc8be663a75b8c5e7856eda06e9bcb4a1b1ef57141f2]"18446744073709551801
�040000004bb6766496f7589ef3a3468c1fcd19f5bc55984f85f1eb88217edcc352528a300bade6d3ce1f82694e76e4aafa3540f12c3bda7efe530b0b07347bdbef8219942db18653ffff7f20f2ffffef@3bb65618de6cb0b7a99a63988b5c222a8d2b6f9631f8972ba630712345bda591]"18446744073709551801
�
�04000000f24171f51e1b4acb9b6ea0ed56785e8c5ba763e68bbc06cce3970387098f0656f4b37eba22e7d9109875b43d9d5b5b4207d07401627046d97edb4ae2d2fb349d34b78653ffff7f20626666e6@513984f68ba83306ca305dfe1b85917fe1b42ad1bbeb22a894d16c65b3b4a1cd^"18446744073709551803
�0400000091a5bd45237130a62b97f831966f2b8d2a225c8b98639aa9b7b06cde1856b63bae5a00bf6d39362089982a62ebd3c547582005bd1168a1d5edffbc81b7099eb83bb28653ffff7f2002000000@3e3a9d79b88b6e9c93c6ac6982dbd0fcc4e933ca19ae82edf57ad34f5e657c86^"18446744073709551803
�
�04000000cda1b4b3656cd194a822ebbbd12ab4e17f91851bfe5d30ca0633a88bf6843951c5c983c1d246c509743d5a9e1338c828a0497c466a6bf7df4a56202aaaeea8cd0db98653ffff7f2002000000@53143176465da341ff5545d346650cf6d27bd79eb15c95e461c6f7b4bbef642b_"18446744073709551805
�04000000867c655e4fd37af5ed82ae19ca33e9c4fcd0db8269acc6939c6e8bb8799d3a3e6aa0273ac76394d4ac3bb92a7125be10b7af99eacac93ac559cec7742533edb4afb48653ffff7f2001000000@73c1380e16d4fd137145e8afa05bf7192ee277ed9774af81e153e522d503a0b7_"18446744073709551805
�
�040000002b64efbbb4f7c661e4955cb19ed77bd2f60c6546d34555ff41a35d4676311453405ee5bac5d29ce2a4629ea0af03a35ca5e9049d5f254f3ea35b57ba7e1d911d5fba8653ffff7f2001000000@0d790fa497844427ff3e13fae54cb7e2695873645d8e7503a1895e9bab60c907`"18446744073709551807
�04000000b7a003d522e553e181af7497ed77e22e19f75ba0afe8457113fdd4160e38c17399f9772ba31a4119539e356fe289a5e6f7c6c0e3546d14b08b928cbee2de27e7bcb58653ffff7f20f3ffffef@75f9f6b7b5826b3dc9aeeafa21eb499b4ef1cafa5331115bd7d64c3b777a35a8`"18446744073709551807
�
�0400000007c960ab9b5e89a103758e5d64735869e2b74ce5fa133eff27448497a40f790d5b26435c69425452833fa52aaacbf92fe451d8388b48fe20fde131c4cb6c782367bc8653ffff7f20656666e6@00924cf088e650fed31e7f73cbbd5d1572b6fae794e8e56c9a48a6b1c5d2d4e9a"18446744073709551809
�04000000a8357a773b4cd6d75b113153facaf14e9b49eb21faeaaec93d6b82b5b7f6f9750e8dab732d830b1af5ed1d5a0eba7d1eff82d331c1ca963150c67f9368c9defd51b78653ffff7f20f3ffffef@1185f7d04249ad5d4de79989f36a5c0b1d140c22fa9eb4cb39398ac9d9e0070ea"18446744073709551809
�
�04000000e9d4d2c5b1a6489a6ce5e894e7fab672155dbdcb737f1ed3fe50e688f04c92003c84de72cedc24e41262f593fd613dccb184fed49ca372866317f149404d2ee0f4bd8653ffff7f2001000000@5b33e3847739a4f5238953cf3767eb92c11c12bce0ccf401e927ca634e132436b"18446744073709551811
�040000000e07e0d9c98a3939cbb49efa220c141d0b5c6af38999e74d5dad4942d0f785111f10c6f4644b9f1addf7f97846a5dd272e41067e0ae97ee5a1f6ec85f1babdf8e8b98653ffff7f20f3ffffef@772d5dad5e53f1a2e07b37a2adbc2c0e0abb54fb72cf54eb9da4caa3b05fadddb"18446744073709551811
�
�040000003624134e63ca27e901f4cce0bc121cc192eb6737cf538923f5a4397784e3335bbeb9086166aac2c71c7e2639fe5384eda90a57f60c2ea820991e3f54bc687cae2ec08653ffff7f209b999919@02d0c2a49e4d8f024e4472ad023c3cb265796e692647a4569bfaa95dce3e5c12c"18446744073709551813
�04000000ddad5fb0a3caa49deb54cf72fb54bb0a0e2cbcada2377be0a2f1535ead5d2d77ad07c9fda8ca9ac0f94a026df4be6e6a73cee606e06b781fe3e7b91f73da717847bc8653ffff7f20f2ffffef@07aecf35204dbf3e666cf055278cf18e227a5bbad2ea6a70a0fc36c00884d1acc"18446744073709551813
�
�04000000125c3ece5da9fa9b56a44726696e7965b23c3c02ad72444e028f4d9ea4c2d002796351c6d77ed20c7c3a5558cd6ddd4a04c03d5cfc0ce068be9f1c4716f9c008bcc18653ffff7f2001000000@6c16619b2e79d271083650fb675246a274f17e3cdff7356bdd82faeb106afdc6d"18446744073709551815
�04000000acd18408c036fca0706aead2ba5b7a228ef18c2755f06c663ebf4d2035cfae0768a655486067b45c8cf3b27982053b229a83b0c9593b0fe72d6e0acbb8527c636dbe8653ffff7f20f2ffffef@3683d68b1a0f2257bf03e3c6fd26b45261abbd029924c10cd9f92f225971c31ad"18446744073709551815
�
�04000000c6fd6a10ebfa82dd6b35f7df3c7ef174a2465267fb50360871d2792e9b61166c2cea51b09934e43e330d4392934c478c3a44af51a1fdbd6b15453fa1e39c5fd368c48653ffff7f2001000000@56acf0dcc7cc0fc1a5440eb7e5921fa4b61b401ac208d6864ed1bbc036d8a1b4e"18446744073709551817
�040000001ac37159222ff9d90cc1249902bdab6152b426fdc6e303bf57220f1a8bd68336588fac98b385a6f447309ecee5303ecd9a6374c3fc2b5886c94ba672e7fb30a2b0c08653ffff7f2001000000@6955a5fe7d7161d15db5a4dad62b10bf1557dbd41f204666b8a40215bf19fdbae"18446744073709551817
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"6ca1b43237d5fcd0fda8b80bfcb91555279c0da3932f85837f68b6b0f74d6d2e","merkle_root":"96e13ff744512fe15cb414bf753ea2358b4a3adf44e410488f07147cc0ee6317","time":1401336455,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"6186e1412425593e6f332f4fdba4fe8d7c864225ce6e403526144e89560af767","merkle_root":"f0eb9c55cc473835b2505af2de6854a092eb3b09b9c35cda6988e97fd5a8b7c3","time":1401336739,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"03b73fe75921f51126927209ed331a2341263e8ac3ab3b75402b4b0b9674ca4a","merkle_root":"36083818a453bd32fd10e3a0b3c6f630247acbafbd971da9bb1651fabbb9d175","time":1401337268,"bits":545259519,"nonce":3865470563},{"version":4,"prev_blockhash":"56068f09870397e3cc06bc8be663a75b8c5e7856eda06e9bcb4a1b1ef57141f2","merkle_root":"9d34fbd2e24adb7ed94670620174d007425b5b9d3db4759810d9e722ba7eb3f4","time":1401337652,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"513984f68ba83306ca305dfe1b85917fe1b42ad1bbeb22a894d16c65b3b4a1cd","merkle_root":"cda8eeaa2a20564adff76b6a467c49a028c838139e5a3d7409c546d2c183c9c5","time":1401338125,"bits":545259519,"nonce":3865470564},{"version":4,"prev_blockhash":"6cbc771098b26d02ab466e9855be658c0cddd1ae690d0c529e559f3021d44f6f","merkle_root":"1d911d7eba575ba33e4f255f9d04e9a55ca303afa09e62a4e29cd2c5bae55e40","time":1401338463,"bits":545259519,"nonce":3865470565},{"version":4,"prev_blockhash":"6b0509953d7b7cdd76dd421af613e8fcd5ec8bd88f08fa7190567379efe48e84","merkle_root":"23786ccbc431e1fd20fe488b38d851e42ff9cbaa2aa53f83525442695c43265b","time":1401338983,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"212fc2708ede39cc1048aa168d632705db73023ba2ba1ca2a8be24240f96337e","merkle_root":"e02e4d4049f117638672a39cd4fe84b1cc3d61fd93f56212e424dcce72de843c","time":1401339380,"bits":545259519,"nonce":1},{"version":4,"prev_blockhash":"745b17770eb3e28dda913d72189477828f8d0e38fcd2839364f6878e920f99aa","merkle_root":"ae7c68bc543f1e9920a82e0cf6570aa9ed8453fe39267e1cc7c2aa666108b9be","time":1401339950,"bits":545259519,"nonce":3865470565},{"version":4,"prev_blockhash":"14e6b377f2b67fd426691954381808b6bf28477a401b0ec0102738d7c62f1c72","merkle_root":"08c0f916471c9fbe68e00cfc5c3dc0044add6dcd58553a7c0cd27ed7c6516379","time":1401340348,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"668a9198e9990373b76c0fa588e126669fda0aba1a48ac0ae0647272b2920950","merkle_root":"d35f9ce3a13f45156bbdfda151af443a8c474c9392430d333ee43499b051ea2c","time":1401341032,"bits":545259519,"nonce":3865470562}]}}
{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"3cbb59311028c2653f16057db6cb51789d70f413d3386fb3f1f41c7630d5aad2","merkle_root":"d6c5c432453eed0d6e18968873272d758abd2ff9f2567d7342f9c146291b9264","time":1401335517,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"2b6bb0ba21189a4ecb235fb0fd547e5f30c43a98da0d2a290739bf21dd4a42e3","merkle_root":"27c60453acf95237b91f55f8cfcdb2809eb9d944693f39031d20406a0405a8b6","time":1401335806,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"308a5252c3dc7e2188ebf1854f9855bcf519cd1f8c46a3f39e58f7966476b64b","merkle_root":"941982efdb7b34070b0b53fe7eda3b2cf14035faaae4764e69821fced3e6ad0b","time":1401336109,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"3bb65618de6cb0b7a99a63988b5c222a8d2b6f9631f8972ba630712345bda591","merkle_root":"b89e09b781bcffedd5a16811bd05205847c5d3eb622a98892036396dbf005aae","time":1401336379,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"39fc26fb3f80af296bca0a0349eb937bee2713bbfda146bc2d7a47a32c53fb7a","merkle_root":"b4ed332574c7ce59c53ac9caea99afb710be25712ab93bacd49463c73a27a06a","time":1401337007,"bits":545259519,"nonce":4026531829},{"version":4,"prev_blockhash":"6fd7d82642ac803224e52a94ea11b16a44d715da01e9f4a8da01b1e23f4fa94f","merkle_root":"e727dee2be8c928bb0146d54e3c0c6f7e6a589e26f359e5319411aa32b77f999","time":1401337276,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"5c7243eb3b5edfa9bdc6d379b32f723f9d935d99f58d7c8ec3fad539427c28db","merkle_root":"fddec968937fc6503196cac131d382ff1e7dba0e5a1dedf51a0b832d73ab8d0e","time":1401337681,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"09519b0e9fbdd2aef4635a274913f49f6d478e51232b9081d7a3acc7da43e482","merkle_root":"f8bdbaf185ecf6a1e57ee90a7e06412e27dda54678f9f7dd1a9f4b64f4c6101f","time":1401338344,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"66fdfce54bccc9328de1098940a2f411bf16a6469ee3b1e113cf6ebadac88b10","merkle_root":"7871da731fb9e7e31f786be006e6ce736a6ebef46d024af9c09acaa8fdc907ad","time":1401338951,"bits":545259519,"nonce":536870911},{"version":4,"prev_blockhash":"1ff9a41ea1f798e44f299a6f6555a7cdd1466257e23d677efde484859eb1bb64","merkle_root":"637c52b8cb0a6e2de70f3b59c9b0839a223b058279b2f38c5cb467604855a668","time":1401339501,"bits":545259519,"nonce":4026531827},{"version":4,"prev_blockhash":"6b3688f531d34fc10fc0a6be976420e89b97fe29bc4d099489450b7324a1a4be","merkle_root":"a230fbe772a64bc986582bfcc374639acd3e30e5ce9e3047f4a685b398ac8f58","time":1401340080,"bits":545259519,"nonce":4026531826}]}}
Binary file modified packages/test-utils/testdata/btc_timestamp.dat
Binary file not shown.
Binary file modified packages/test-utils/testdata/btc_timestamp_header0.dat
Binary file not shown.
3 changes: 1 addition & 2 deletions packages/test-utils/testdata/btc_timestamp_header1.dat
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
UG̽� U�8y��-�&%���I��@� >��$4K` ���U���|)��L��b��� �Þ
U�Y�� cff�
yJ�sL]�'m�:��6��}�%�10DһZ��G��%����h��uB��7/�yg)�y����J E�)�H�� ����
Expand Down
Binary file modified packages/test-utils/testdata/btcstaking_params.dat
Binary file not shown.
Binary file modified packages/test-utils/testdata/raw_ckpt.dat
Binary file not shown.

0 comments on commit ff2e8ce

Please sign in to comment.