Compare commits
638 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0ba2871186 | |||
| bc7edb660f | |||
| a7a1cbfd23 | |||
| e9cde7d57c | |||
| bebc33dc5b | |||
| 580f5469dc | |||
| 67003ad16f | |||
| 10d696f6a7 | |||
| 56d94f265c | |||
| c88bfd7ec5 | |||
| 92fa5c97b9 | |||
| b18eaecf48 | |||
| 076c98e1db | |||
| f66719270b | |||
| 43aa90634b | |||
| 48d0d23911 | |||
| 76fceb9d6a | |||
| 5c2f288d0c | |||
| d74d5c624d | |||
| 41a5f892d3 | |||
| ec78c8d2a6 | |||
| 45e1224975 | |||
| 817b24dcc8 | |||
| 1a74608567 | |||
| d7d21d1d63 | |||
| 205641c348 | |||
| 097d6caf63 | |||
| 6e100b2b1e | |||
| 25eb9bd4fa | |||
| b3ecc6d1fc | |||
| 9d138f7c4d | |||
| ea67d4bde0 | |||
| 321f2da312 | |||
| efd6d7e810 | |||
| 3779056dcc | |||
| 1549727859 | |||
| 106d596d82 | |||
| 48ea298718 | |||
| e5217f16bf | |||
| c14eefb773 | |||
| df9529c8d7 | |||
| d45aba4715 | |||
| 7413ef19fa | |||
| b14d7b42a5 | |||
| c285e9fe97 | |||
| 52dc20503b | |||
| 492aaa479b | |||
| eaeab701e0 | |||
| 902353d426 | |||
| fc4d60c931 | |||
| 00efe2db27 | |||
| 448921c13c | |||
| 762ae01b11 | |||
| 0d7637cf85 | |||
| 25a0d33391 | |||
| 850de1ca35 | |||
| 5156037581 | |||
| 81a249c09d | |||
| 6b84267918 | |||
| c0c4cb2a40 | |||
| e152b0826e | |||
| 096aa86f6f | |||
| 820a063848 | |||
| 8e1e729208 | |||
| 8d7d0411bd | |||
| 5e3a36b7a5 | |||
| 426826ae38 | |||
| f35c5e64d5 | |||
| cc7489021a | |||
| 1ad2ea4c53 | |||
| 61e130be8a | |||
| 1e51b6c2e0 | |||
| 1fe04d3288 | |||
| cbe5cfbd8f | |||
| 8d7a293376 | |||
| 629d0fff9d | |||
| 518c8304fa | |||
| 0056fbf9f8 | |||
| 88cfa65427 | |||
| 89c1345af9 | |||
| 27b9d942f3 | |||
| a0aa347266 | |||
| 3273bd3b9f | |||
| d0192ce143 | |||
| 254d69702d | |||
| 52bce935da | |||
| 1b1a467f87 | |||
| 85a2eccdd9 | |||
| 50e8175378 | |||
| 3041c381b7 | |||
| 9db5f97e93 | |||
| 98dc651173 | |||
| 900b2a265f | |||
| 19ec766fa7 | |||
| 1f1243de18 | |||
| 63b6b55b3d | |||
| 318982e2d9 | |||
| 51d664a7fd | |||
| 6817911900 | |||
| 2c9e99ee79 | |||
| df81354c59 | |||
| 573346fdbc | |||
| e8fb022fc3 | |||
| 68e932685a | |||
| 359e98c2e4 | |||
| b49476c7e7 | |||
| ba3614b6da | |||
| df8665cbc7 | |||
| fda9c85d3e | |||
| f19322debc | |||
| 5e660e6a19 | |||
| f8a58d5695 | |||
| e58a372957 | |||
| 85a47ed67f | |||
| 7466a35657 | |||
| dc5c8bc156 | |||
| 7ca2be67bc | |||
| 461a055722 | |||
| 23ae97ab24 | |||
| 453829a979 | |||
| f62ea0a8da | |||
| 67d825204b | |||
| 348df64985 | |||
| e6c2c443a1 | |||
| 507ba01811 | |||
| f64af6bb62 | |||
| db0ae8d641 | |||
| 15a5603e9f | |||
| 1f60ee22bc | |||
| 662c5168c5 | |||
| b2e7127ae1 | |||
| f9b858629e | |||
| 6514a7d637 | |||
| 19c0e035fc | |||
| 12dc0492f6 | |||
| 86d596ed64 | |||
| 5c698bbdb0 | |||
| 93ae59477d | |||
| d2d7996ef2 | |||
| 9f35958d1e | |||
| 3509fb3a66 | |||
| 5449f5bb65 | |||
| 195face0b7 | |||
| 6e72e794a7 | |||
| 8bdf1d5d75 | |||
| a0bda40586 | |||
| 846d883cad | |||
| 9d21b27683 | |||
| e94fe45d48 | |||
| c98013059a | |||
| ffc369e561 | |||
| b73c365e6c | |||
| e5c026a7bb | |||
| 63b38d2ede | |||
| a89206157a | |||
| 274cb2b096 | |||
| d36ca7a521 | |||
| 4b81339a2b | |||
| 7b47eba942 | |||
| c62fa0329b | |||
| dd3b6a1185 | |||
| 3428e9ddf0 | |||
| 41de4c7944 | |||
| 0cb196b7fa | |||
| 0a553b9896 | |||
| 3530680225 | |||
| 04b3d7e45d | |||
| 10b6513250 | |||
| 02fce4905e | |||
| b5fff95824 | |||
| 38856b4b19 | |||
| 1fa43f2962 | |||
| b64aa18acd | |||
| f46c75e1e3 | |||
| 0cb6c941bf | |||
| 2217875a23 | |||
| 8854dad074 | |||
| b034c5652e | |||
| 592c440c03 | |||
| a225514e09 | |||
| 5e7b64230e | |||
| 014fe70c10 | |||
| bdce1ed68f | |||
| 738068153d | |||
| 7815e5c201 | |||
| 3edf7de79a | |||
| 6fb94f69e4 | |||
| a0f59c37ab | |||
| 38f46a6f29 | |||
| d0c6bb5e82 | |||
| a39dcb92ea | |||
| 814aecade5 | |||
| 4970c7f301 | |||
| 5ed2e8d8f5 | |||
| 81b07f1e3a | |||
| 84a4eae354 | |||
| 9d1ff5f8a8 | |||
| 423b20af50 | |||
| 94a9fb880b | |||
| 111353007e | |||
| 6a4e948cfb | |||
| 83205a89ae | |||
| 0993331053 | |||
| 6501fb8f90 | |||
| 178399e194 | |||
| 830a2766e7 | |||
| 919aa87be3 | |||
| e21dadfc05 | |||
| 09938266e7 | |||
| ed13718f40 | |||
| 4ec35a54cf | |||
| a3e89bbe15 | |||
| 987a85c60f | |||
| d9d89d3400 | |||
| d6c3e25ff2 | |||
| c9dba88248 | |||
| c31f87a055 | |||
| 3217b0109e | |||
| 37a64bbbfb | |||
| c061f0aa7e | |||
| 11322f7eb2 | |||
| 5a30dd8c66 | |||
| d59a6d9ad8 | |||
| 6548c151b3 | |||
| b5132e5712 | |||
| c26f32bf85 | |||
| a88db156a0 | |||
| 26d02d53ef | |||
| e13e5310f0 | |||
| 3c276824e2 | |||
| 0f12128ada | |||
| 29e6a1ace1 | |||
| 986d8356bc | |||
| da5a23ba5e | |||
| 06a7a4f898 | |||
| 28ff444e14 | |||
| a3f367938f | |||
| 1a17c5c928 | |||
| 40ce57c871 | |||
| ed63a66101 | |||
| 3749a3c80c | |||
| 69711ea65a | |||
| 8e5ac5f481 | |||
| 9e8fc55142 | |||
| dc12109f48 | |||
| 9a9ee50adf | |||
| f784beb981 | |||
| a84816f04c | |||
| f40e17d43f | |||
| aa5d31ac74 | |||
| 45ae6210ba | |||
| 7f032dbfd6 | |||
| 8e26701f37 | |||
| 911861725d | |||
| 23aa0096d8 | |||
| aabc1505cb | |||
| a7f99b7ebb | |||
| dc78df121e | |||
| a69b845e4a | |||
| 3f916d0f95 | |||
| b05d6ae8e1 | |||
| 3a866eba7d | |||
| f6fd22a1c0 | |||
| 03fc82695b | |||
| ff1523a5e9 | |||
| 7588963d63 | |||
| 2152cfac6f | |||
| e9c21e27a7 | |||
| 6f520bfb8f | |||
| 94c6e67436 | |||
| 098fe051cd | |||
| e1068c2ae2 | |||
| ee0dd02dd0 | |||
| 6236f47996 | |||
| 5703159607 | |||
| aee048e04c | |||
| 505d369ab5 | |||
| 1dbd544fdb | |||
| 40fb86f282 | |||
| f04f8baed2 | |||
| 324d742423 | |||
| 76529e1248 | |||
| 9905f19668 | |||
| 263aa270d1 | |||
| 31db0de0ba | |||
| 5600327c5f | |||
| 45c336e883 | |||
| 79ca9d75e4 | |||
| d4125fe729 | |||
| 92a49646dc | |||
| cc81ea1585 | |||
| 09d5b42b9a | |||
| b5756d7e6b | |||
| e9c60bc8d2 | |||
| 3a80532366 | |||
| e1f93acfca | |||
| ac6b604ce1 | |||
| 5e9a867efc | |||
| 143fda3fa6 | |||
| db21390026 | |||
| 017bc2429d | |||
| b019793a42 | |||
| a024a787c2 | |||
| 685d5f16c3 | |||
| 39d0b17894 | |||
| 6c302ca0d1 | |||
| e8e7a6317f | |||
| 2336c9719e | |||
| ba59e6c48c | |||
| 2769a23902 | |||
| 82d217ffd5 | |||
| 3d6319b47d | |||
| 46f1d4c84b | |||
| 0771e99d26 | |||
| d3905d5975 | |||
| 2ad747a239 | |||
| bb3968dd51 | |||
| 19f1874fbe | |||
| ccb7134256 | |||
| 5241e96113 | |||
| 982c1cb8e3 | |||
| 8352c20e57 | |||
| 47923244fc | |||
| 082cbe2649 | |||
| 68d1c7333b | |||
| e399374063 | |||
| 2b72cf6453 | |||
| bcd55fd530 | |||
| e5b8ac9e47 | |||
| 1f17227e7d | |||
| 40e903cb3f | |||
| d786299a95 | |||
| f028ddb05c | |||
| 866ee1895f | |||
| 72712b6d94 | |||
| aab34becfa | |||
| 12c4caef80 | |||
| 87d0a856f5 | |||
| ba79acfe64 | |||
| 4449c7dcfc | |||
| 31b9272b7d | |||
| 1db602aa46 | |||
| 03be094a6a | |||
| 037a930c76 | |||
| 5698ab021d | |||
| d3220529d1 | |||
| 89a3a6c6ea | |||
| 77480b98bc | |||
| 0c0d14851d | |||
| ad0234f0eb | |||
| 45e0e9ef4c | |||
| d2b7bf0ef5 | |||
| 790ee9e598 | |||
| 9bac82b7c3 | |||
| cf380d1e3e | |||
| 8155367ae4 | |||
| 5c2c97af42 | |||
| c03834c9e4 | |||
| 76da53b924 | |||
| 7716020c01 | |||
| 8c9c75ee37 | |||
| e3dc31c4d3 | |||
| 9b83858d31 | |||
| 01ec3856f8 | |||
| 11c08783e2 | |||
| f1fd1b66a9 | |||
| 8d360aafaa | |||
| d6b55a9a88 | |||
| ba3ab2eb93 | |||
| a565d8302a | |||
| f9ef85939a | |||
| 4e24b85036 | |||
| 727bd4420d | |||
| 5f8dc7f14f | |||
| 8001c3a523 | |||
| 4cd646255a | |||
| 33aff9ea02 | |||
| fb51a455e7 | |||
| ad48f91424 | |||
| 8be80df905 | |||
| 8f43222de9 | |||
| 3110938f74 | |||
| adde25b778 | |||
| 18434830c9 | |||
| 2c705416fc | |||
| 83a04998e1 | |||
| 572e6fa2d6 | |||
| a39d0d1465 | |||
| 2de94ed050 | |||
| 9263f850fd | |||
| daa2eb0a47 | |||
| 3ca29342f7 | |||
| 87a379c1f3 | |||
| 5aa314582f | |||
| 46ee60f0e8 | |||
| e73efe1519 | |||
| e816432d9d | |||
| bb925e4e53 | |||
| 671c586620 | |||
| e368e17af9 | |||
| 6e176965f9 | |||
| df641335b8 | |||
| 0faf59b663 | |||
| 37dfc777ab | |||
| c23b413110 | |||
| 061828bddc | |||
| 4423ba406e | |||
| a055cd2a1a | |||
| c12aae8e02 | |||
| 0d47fe7b34 | |||
| d1cda466e6 | |||
| 32442818ff | |||
| 0bcd3e5898 | |||
| 27abc7f577 | |||
| 770a700257 | |||
| 57ebafe45c | |||
| d5d9e2009f | |||
| 36d7ff52a0 | |||
| f184f2b3fb | |||
| 2fde691fd3 | |||
| 2e24e37ab8 | |||
| 8a7605bbf7 | |||
| ae42480e3b | |||
| f3d34f750a | |||
| 9b6c663953 | |||
| a892819304 | |||
| 60a5ee333a | |||
| 905f689e6a | |||
| d4a7f362f4 | |||
| 2ec42da73c | |||
| b826fc223c | |||
| 374018cb73 | |||
| 2d10053324 | |||
| 3785f38179 | |||
| 8c24959d46 | |||
| 8de6312609 | |||
| 151c429f8b | |||
| ce31ba0eb2 | |||
| df61cc1fd8 | |||
| 58971d3290 | |||
| bea59c15da | |||
| d14a5f3635 | |||
| 7661a16cc7 | |||
| 5a099a0fb6 | |||
| b3dd31145f | |||
| 85b98257c4 | |||
| 9c17974971 | |||
| 046dd033b8 | |||
| c0d4b9e432 | |||
| 234ed11b36 | |||
| d8aec8b52b | |||
| 4acbfccd1c | |||
| e8260d61a9 | |||
| ab002a67e2 | |||
| f23645fc58 | |||
| 609f55db28 | |||
| 6be26f3ac8 | |||
| 2e0e164583 | |||
| 1282a2c168 | |||
| dcb80fb15b | |||
| c2eac412f0 | |||
| 4453b71cec | |||
| 9576766186 | |||
| 39538b500c | |||
| 007e14c816 | |||
| 2be38776f7 | |||
| 4e2eab1c28 | |||
| e66feb63c4 | |||
| 5e7edd3d48 | |||
| 77282708c6 | |||
| 2fa6719028 | |||
| ef17c0bf57 | |||
| 1f34d31374 | |||
| 1434fb068d | |||
| cca3fb4b6a | |||
| 683737a864 | |||
| 714c29abd5 | |||
| e2c73a9228 | |||
| 29c988dcbf | |||
| acab5b3fa6 | |||
| 980fc79258 | |||
| 1f1754b94f | |||
| be7680bf63 | |||
| 6e8835a75c | |||
| e720b4b796 | |||
| 52b2978691 | |||
| 543ace5bb9 | |||
| f58f1b19fb | |||
| 9391f5dbeb | |||
| 5f40d51a8c | |||
| a7cc6266dd | |||
| f5615f22b3 | |||
| b4edcfabce | |||
| 161c8da6d1 | |||
| a256d17c3c | |||
| 031ebb5174 | |||
| 036ec8e1c4 | |||
| 976b39af9f | |||
| 655c5ca40c | |||
| 059cee4650 | |||
| 3618276910 | |||
| f0e13b4652 | |||
| dba88052f7 | |||
| af2082b8be | |||
| fe68ea525b | |||
| 410720e3cb | |||
| 98937fc48b | |||
| 51f5c72bc0 | |||
| 646f4b4fa4 | |||
| 59fe31c7cd | |||
| d1e63ec9a9 | |||
| babbb1ca82 | |||
| 8d99a508ae | |||
| cb9f518fcc | |||
| 4ee51d86ec | |||
| aaf1187132 | |||
| 3875e37e06 | |||
| 1e528a8ace | |||
| 9bd1770c5d | |||
| ba7f60314b | |||
| db9e2ef8a0 | |||
| 170217bd78 | |||
| cd64609383 | |||
| b92a6a144b | |||
| 9cce0357f4 | |||
| 3cfeabcde9 | |||
| d93a2761a4 | |||
| d265e72590 | |||
| d25217d5bd | |||
| a26c4e984e | |||
| be93354493 | |||
| fdd3f43913 | |||
| 81aa2ed881 | |||
| fb3e24255b | |||
| b6abe77a18 | |||
| f4c27d3a33 | |||
| ef0f04a66c | |||
| 0be1228a8d | |||
| a0e8d6dc64 | |||
| d44b2cf875 | |||
| 0a0a09ebbc | |||
| 56ece06266 | |||
| 666cb791e5 | |||
| 8b09492091 | |||
| bcd9f59578 | |||
| 7d62d315a7 | |||
| 4facc1a2b0 | |||
| befc500a4a | |||
| 23fd8a8f7d | |||
| d3d7625d25 | |||
| 28e59d67ea | |||
| d9a511f08f | |||
| 0e9202021e | |||
| 2eec9ea60c | |||
| 58d80cc600 | |||
| 365c1d8483 | |||
| 1a001afc57 | |||
| db3e906d80 | |||
| 472d08283a | |||
| 43f290d6bc | |||
| c169ac6e42 | |||
| d7f4e96de4 | |||
| 1ab3676087 | |||
| 5c23cc43d0 | |||
| ac802e862b | |||
| c6b331d31a | |||
| 56ae2bc62f | |||
| acf2bb63bc | |||
| b61d06c812 | |||
| ca86373fdf | |||
| e44c6c4006 | |||
| 66bfda2e79 | |||
| 5c1ff95535 | |||
| a4ffdf57d9 | |||
| cf91de3c35 | |||
| 1884261435 | |||
| 2666fe301c | |||
| 91bf1f10ef | |||
| 5bcc66db06 | |||
| bdab1c9ec7 | |||
| cee97f0786 | |||
| 344758d343 | |||
| 23423397a8 | |||
| 6c116ca505 | |||
| 2d0162969f | |||
| 3720a74a6c | |||
| 9dd0ff9e83 | |||
| 3fce516c39 | |||
| 23bf888ede | |||
| a9a09b1f0f | |||
| e1b9b1895e | |||
| 7091226578 | |||
| f9b7b35d1b | |||
| 4c160dd323 | |||
| 494655c741 | |||
| e45637f101 | |||
| 0dd3c0b4ac | |||
| 36e219cc3e | |||
| eb6e14442e | |||
| c8401519cc | |||
| d09e9172c5 | |||
| 887e17c2cd | |||
| b9f29c4d9a | |||
| d203c362ef | |||
| dfa3c92a71 | |||
| a1e345c00b | |||
| 2ca2a6f538 | |||
| 6ef77f86b6 | |||
| 0f9ac1b210 | |||
| 3019dcdc76 | |||
| c5e31c8f15 | |||
| 8b15d9b3be | |||
| 9947888c1a | |||
| 066414989f | |||
| e1112073fa | |||
| 9e1026b14f | |||
| 4aca6e3409 | |||
| a1a7d0e9ee | |||
| cbdea59049 | |||
| a70d6d527b | |||
| 3c6a5c934c | |||
| f0681a0703 | |||
| d72fb56f2f | |||
| 364231c7e0 | |||
| 56726ffd2a | |||
| 08c814c71b | |||
| 574ab49496 | |||
| c553833b79 | |||
| d8f92da702 | |||
| 89c698e642 | |||
| 786b7bc2e3 | |||
| 314d4fdd39 | |||
| ff0be92c3f | |||
| f504eb5185 | |||
| 02b7aba063 | |||
| 341b50703e | |||
| b58261f8a0 | |||
| 5b65a5d1fd |
@@ -7,13 +7,10 @@ RUN apt-get update && apt-get upgrade -y && \
|
||||
g++-8 \
|
||||
git \
|
||||
jq \
|
||||
libcurl4-openssl-dev \
|
||||
libgmp-dev \
|
||||
libssl-dev \
|
||||
libusb-1.0-0-dev \
|
||||
llvm-7-dev \
|
||||
ninja-build \
|
||||
pkg-config \
|
||||
python3 \
|
||||
software-properties-common \
|
||||
zlib1g-dev \
|
||||
|
||||
@@ -7,11 +7,8 @@ RUN apt-get update && apt-get upgrade -y && \
|
||||
git \
|
||||
jq \
|
||||
libboost-all-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libgmp-dev \
|
||||
libssl-dev \
|
||||
libusb-1.0-0-dev \
|
||||
llvm-11-dev \
|
||||
ninja-build \
|
||||
pkg-config \
|
||||
zstd
|
||||
|
||||
@@ -7,11 +7,8 @@ RUN apt-get update && apt-get upgrade -y && \
|
||||
git \
|
||||
jq \
|
||||
libboost-all-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libgmp-dev \
|
||||
libssl-dev \
|
||||
libusb-1.0-0-dev \
|
||||
llvm-11-dev \
|
||||
ninja-build \
|
||||
pkg-config \
|
||||
zstd
|
||||
|
||||
@@ -57,6 +57,7 @@ jobs:
|
||||
push: true
|
||||
tags: ${{fromJSON(needs.d.outputs.p)[matrix.platform].image}}
|
||||
file: ${{fromJSON(needs.d.outputs.p)[matrix.platform].dockerfile}}
|
||||
|
||||
Build:
|
||||
needs: [d, build-platforms]
|
||||
if: always() && needs.d.result == 'success' && (needs.build-platforms.result == 'success' || needs.build-platforms.result == 'skipped')
|
||||
@@ -83,23 +84,38 @@ jobs:
|
||||
ninja
|
||||
# the correct approach is by far "--show-only=json-v1 | jq '.tests[].name' | jq -sc" but that doesn't work on U18's cmake 3.10 since it lacks json-v1
|
||||
echo ::set-output name=lr-tests::$(ctest -L "long_running_tests" --show-only | head -n -1 | cut -d ':' -f 2 -s | jq -cnR '[inputs | select(length>0)[1:]]')
|
||||
tar -pc -C .. --exclude "*.a" --exclude "*.o" build | zstd --long -T0 -9 > ../build.tar.gz
|
||||
tar -pc -C .. --exclude "*.o" build | zstd --long -T0 -9 > ../build.tar.zst
|
||||
- name: Upload builddir
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: AntelopeIO/upload-artifact-large-chunks-action@v1
|
||||
with:
|
||||
name: ${{matrix.platform}}-build
|
||||
path: build.tar.gz
|
||||
- name: Build dev package (Ubuntu 20 only)
|
||||
if: matrix.platform == 'ubuntu20'
|
||||
run: |
|
||||
cd build
|
||||
ninja package
|
||||
- name: Upload dev package (Ubuntu 20 only)
|
||||
if: matrix.platform == 'ubuntu20'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: leap-dev-ubuntu20-amd64
|
||||
path: build/leap-dev*.deb
|
||||
path: build.tar.zst
|
||||
|
||||
dev-package:
|
||||
name: Build leap-dev package
|
||||
needs: [d, Build]
|
||||
if: always() && needs.Build.result == 'success'
|
||||
runs-on: ubuntu-latest
|
||||
container: ${{fromJSON(needs.d.outputs.p)['ubuntu20'].image}}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
- name: Download builddir
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: ubuntu20-build
|
||||
- name: Build dev package
|
||||
run: |
|
||||
zstdcat build.tar.zst | tar x
|
||||
cd build
|
||||
cpack
|
||||
- name: Upload dev package
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: leap-dev-ubuntu20-amd64
|
||||
path: build/leap-dev*.deb
|
||||
|
||||
tests:
|
||||
name: Tests
|
||||
needs: [d, Build]
|
||||
@@ -122,9 +138,10 @@ jobs:
|
||||
run: |
|
||||
# https://github.com/actions/runner/issues/2033 -- need this because of full version label test looking at git revs
|
||||
chown -R $(id -u):$(id -g) $PWD
|
||||
zstdcat build.tar.gz | tar x
|
||||
zstdcat build.tar.zst | tar x
|
||||
cd build
|
||||
ctest --output-on-failure -j $(nproc) -LE "(nonparallelizable_tests|long_running_tests)"
|
||||
|
||||
np-tests:
|
||||
name: NP Tests
|
||||
needs: [d, Build]
|
||||
@@ -145,7 +162,7 @@ jobs:
|
||||
name: ${{matrix.platform}}-build
|
||||
- name: Run NP Tests
|
||||
run: |
|
||||
zstdcat build.tar.gz | tar x
|
||||
zstdcat build.tar.zst | tar x
|
||||
cd build
|
||||
ctest --output-on-failure -L "nonparallelizable_tests"
|
||||
- name: Bundle logs from failed tests
|
||||
@@ -157,6 +174,7 @@ jobs:
|
||||
with:
|
||||
name: ${{matrix.platform}}-serial-logs
|
||||
path: ${{matrix.platform}}-serial-logs.tar.gz
|
||||
|
||||
lr-tests:
|
||||
name: LR Tests
|
||||
needs: [d, Build]
|
||||
@@ -178,7 +196,7 @@ jobs:
|
||||
name: ${{matrix.platform}}-build
|
||||
- name: Run ${{matrix.test-name}} Test
|
||||
run: |
|
||||
zstdcat build.tar.gz | tar x
|
||||
zstdcat build.tar.zst | tar x
|
||||
cd build
|
||||
ctest --output-on-failure -R ${{matrix.test-name}}
|
||||
- name: Bundle logs from failed tests
|
||||
@@ -193,9 +211,9 @@ jobs:
|
||||
|
||||
all-passing:
|
||||
name: All Required Tests Passed
|
||||
needs: [tests, np-tests]
|
||||
needs: [dev-package, tests, np-tests]
|
||||
if: always()
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- if: needs.tests.result != 'success' || needs.np-tests.result != 'success'
|
||||
- if: needs.dev-package.result != 'success' || needs.tests.result != 'success' || needs.np-tests.result != 'success'
|
||||
run: false
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
name: Jira Issue Creator
|
||||
on:
|
||||
issues:
|
||||
types:
|
||||
- labeled
|
||||
|
||||
jobs:
|
||||
create-jira-issue:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.label.name == 'OCI'
|
||||
steps:
|
||||
- name: Create json issue file
|
||||
run: |
|
||||
cat << EOF > issue.json
|
||||
{
|
||||
"fields": {
|
||||
"project":
|
||||
{
|
||||
"key": "$JIRA_PROJECT_KEY"
|
||||
},
|
||||
"summary": "$JIRA_ISSUE_SUMMARY",
|
||||
"description": "$JIRA_ISSUE_DESCRIPTION",
|
||||
"issuetype": {
|
||||
"name": "$JIRA_ISSUE_TYPE_NAME"
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
env:
|
||||
JIRA_PROJECT_KEY: ${{ secrets.JIRA_PROJECT_KEY }}
|
||||
JIRA_ISSUE_SUMMARY: ${{ github.event.issue.title }}
|
||||
JIRA_ISSUE_DESCRIPTION: "${{ github.event.issue.url }}\\n\\n${{ github.event.issue.html_url }}"
|
||||
JIRA_ISSUE_TYPE_NAME: "Story"
|
||||
- name: Check issue json
|
||||
run: |
|
||||
cat issue.json
|
||||
- name: Trigger jira issue creation
|
||||
run: |
|
||||
curl -u $JIRA_AUTH -X POST --data @issue.json -H "Content-Type: application/json" --url $JIRA_PROJECT_URL
|
||||
env:
|
||||
JIRA_AUTH: ${{ secrets.JIRA_USN_AND_TOKEN }}
|
||||
JIRA_PROJECT_URL: ${{ secrets.JIRA_PROJECT_URL }}
|
||||
@@ -13,9 +13,6 @@
|
||||
[submodule "libraries/softfloat"]
|
||||
path = libraries/softfloat
|
||||
url = https://github.com/AntelopeIO/berkeley-softfloat-3
|
||||
[submodule "libraries/yubihsm"]
|
||||
path = libraries/yubihsm
|
||||
url = https://github.com/Yubico/yubihsm-shell
|
||||
[submodule "tests/abieos"]
|
||||
path = tests/abieos
|
||||
url = https://github.com/AntelopeIO/abieos
|
||||
|
||||
+17
-31
@@ -14,9 +14,9 @@ set( CMAKE_CXX_EXTENSIONS ON )
|
||||
set( CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(VERSION_MAJOR 3)
|
||||
set(VERSION_MINOR 1)
|
||||
set(VERSION_MINOR 2)
|
||||
set(VERSION_PATCH 0)
|
||||
#set(VERSION_SUFFIX rc4)
|
||||
set(VERSION_SUFFIX dev)
|
||||
|
||||
if(VERSION_SUFFIX)
|
||||
set(VERSION_FULL "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${VERSION_SUFFIX}")
|
||||
@@ -53,7 +53,11 @@ set(ENABLE_MULTIVERSION_PROTOCOL_TEST FALSE CACHE BOOL "Enable nodeos multiversi
|
||||
|
||||
# add defaults for openssl
|
||||
if(APPLE AND UNIX AND "${OPENSSL_ROOT_DIR}" STREQUAL "")
|
||||
set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl@3;/usr/local/opt/openssl@1.1")
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
|
||||
set(OPENSSL_ROOT_DIR "/opt/homebrew/opt/openssl@3;/opt/homebrew/opt/openssl@1.1")
|
||||
else()
|
||||
set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl@3;/usr/local/opt/openssl@1.1")
|
||||
endif()
|
||||
endif()
|
||||
# fc also adds these definitions to its public interface. once fc becomes the sole importer of openssl, this should be removed
|
||||
add_definitions(-DOPENSSL_API_COMPAT=0x10100000L -DOPENSSL_NO_DEPRECATED)
|
||||
@@ -177,6 +181,7 @@ add_subdirectory( scripts )
|
||||
add_subdirectory( unittests )
|
||||
add_subdirectory( tests )
|
||||
add_subdirectory( tools )
|
||||
add_subdirectory( benchmark )
|
||||
|
||||
option(DISABLE_WASM_SPEC_TESTS "disable building of wasm spec unit tests" OFF)
|
||||
|
||||
@@ -213,32 +218,16 @@ install(FILES ${CMAKE_BINARY_DIR}/modules/leap-config.cmake DESTINATION ${CMAKE_
|
||||
install(FILES ${CMAKE_BINARY_DIR}/modules/EosioTester.cmake DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/leap COMPONENT dev EXCLUDE_FROM_ALL)
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/CMakeModules/EosioCheckVersion.cmake DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/leap COMPONENT dev EXCLUDE_FROM_ALL)
|
||||
|
||||
configure_file(${CMAKE_SOURCE_DIR}/LICENSE
|
||||
${CMAKE_BINARY_DIR}/licenses/leap/LICENSE COPYONLY)
|
||||
configure_file(${CMAKE_SOURCE_DIR}/libraries/softfloat/COPYING.txt
|
||||
${CMAKE_BINARY_DIR}/licenses/leap/LICENSE.softfloat COPYONLY)
|
||||
configure_file(${CMAKE_SOURCE_DIR}/libraries/wasm-jit/LICENSE
|
||||
${CMAKE_BINARY_DIR}/licenses/leap/LICENSE.wavm COPYONLY)
|
||||
configure_file(${CMAKE_SOURCE_DIR}/libraries/fc/secp256k1/secp256k1/COPYING
|
||||
${CMAKE_BINARY_DIR}/licenses/leap/LICENSE.secp256k1 COPYONLY)
|
||||
configure_file(${CMAKE_SOURCE_DIR}/libraries/fc/include/fc/crypto/webauthn_json/license.txt
|
||||
${CMAKE_BINARY_DIR}/licenses/leap/LICENSE.rapidjson COPYONLY)
|
||||
configure_file(${CMAKE_SOURCE_DIR}/libraries/fc/src/network/LICENSE.go
|
||||
${CMAKE_BINARY_DIR}/licenses/leap/LICENSE.go COPYONLY)
|
||||
configure_file(${CMAKE_SOURCE_DIR}/libraries/yubihsm/LICENSE
|
||||
${CMAKE_BINARY_DIR}/licenses/leap/LICENSE.yubihsm COPYONLY)
|
||||
configure_file(${CMAKE_SOURCE_DIR}/libraries/eos-vm/LICENSE
|
||||
${CMAKE_BINARY_DIR}/licenses/leap/LICENSE.eos-vm COPYONLY)
|
||||
configure_file(LICENSE licenses/leap/LICENSE COPYONLY)
|
||||
configure_file(libraries/softfloat/COPYING.txt licenses/leap/LICENSE.softfloat COPYONLY)
|
||||
configure_file(libraries/wasm-jit/LICENSE licenses/leap/LICENSE.wavm COPYONLY)
|
||||
configure_file(libraries/fc/secp256k1/secp256k1/COPYING licenses/leap/LICENSE.secp256k1 COPYONLY)
|
||||
configure_file(libraries/fc/include/fc/crypto/webauthn_json/license.txt licenses/leap/LICENSE.rapidjson COPYONLY)
|
||||
configure_file(libraries/fc/src/network/LICENSE.go licenses/leap/LICENSE.go COPYONLY)
|
||||
configure_file(libraries/eos-vm/LICENSE licenses/leap/LICENSE.eos-vm COPYONLY)
|
||||
configure_file(libraries/fc/libraries/ff/LICENSE licenses/leap/LICENSE.libff COPYONLY)
|
||||
|
||||
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/leap/ COMPONENT base)
|
||||
install(FILES libraries/softfloat/COPYING.txt DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/leap/ RENAME LICENSE.softfloat COMPONENT base)
|
||||
install(FILES libraries/wasm-jit/LICENSE DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/leap/ RENAME LICENSE.wavm COMPONENT base)
|
||||
install(FILES libraries/fc/secp256k1/secp256k1/COPYING DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/leap/ RENAME LICENSE.secp256k1 COMPONENT base)
|
||||
install(FILES libraries/fc/include/fc/crypto/webauthn_json/license.txt DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/leap/ RENAME LICENSE.rapidjson COMPONENT base)
|
||||
install(FILES libraries/fc/src/network/LICENSE.go DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/leap/ COMPONENT base)
|
||||
install(FILES libraries/yubihsm/LICENSE DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/leap/ RENAME LICENSE.yubihsm COMPONENT base)
|
||||
install(FILES libraries/eos-vm/LICENSE DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/leap/ RENAME LICENSE.eos-vm COMPONENT base)
|
||||
install(FILES libraries/fc/libraries/ff/LICENSE DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/leap/ RENAME LICENSE.libff COMPONENT base)
|
||||
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/licenses/leap" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/licenses/" COMPONENT base)
|
||||
|
||||
add_custom_target(dev-install
|
||||
COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}"
|
||||
@@ -247,9 +236,6 @@ add_custom_target(dev-install
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
get_property(_CTEST_CUSTOM_TESTS_IGNORE GLOBAL PROPERTY CTEST_CUSTOM_TESTS_IGNORE)
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/CTestCustom.cmake" "SET(CTEST_CUSTOM_TESTS_IGNORE ${_CTEST_CUSTOM_TESTS_IGNORE})")
|
||||
|
||||
include(doxygen)
|
||||
|
||||
include(package.cmake)
|
||||
|
||||
@@ -18,7 +18,7 @@ Recent Ubuntu LTS releases are the only Linux distributions that we fully suppor
|
||||
* CMake 3.8+
|
||||
* (for Linux only) LLVM 7 - 11 (newer versions do not work)
|
||||
|
||||
A few other common libraries are tools also required such as openssl 1.1+, libcurl, curl, libusb, GMP, Python 3, and zlib.
|
||||
A few other common libraries are tools also required such as openssl 1.1+, curl, GMP, Python 3, and zlib.
|
||||
|
||||
**A Warning On Parallel Compilation Jobs (`-j` flag)**: When building C/C++ software often the build is performed in parallel via a command such as `make -j $(nproc)` which uses the number of CPU cores as the number of compilation jobs to perform simultaneously. However, be aware that some compilation units (.cpp files) in Leap are extremely complex and will consume nearly 4GB of memory to compile. You may need to reduce the level of parallelization depending on the amount of memory on your build host. e.g. instead of `make -j $(nproc)` run `make -j2`. Failures due to memory exhaustion will typically but not always manifest as compiler crashes.
|
||||
|
||||
@@ -33,6 +33,8 @@ The binary package will be produced in the Leap build directory that was supplie
|
||||
|
||||
#### Manual (non "pinned") Build Instructions
|
||||
|
||||
These instructions are valid for this branch. Other release branches may have different requirements so ensure you follow the directions in the branch or release you intend to build.
|
||||
|
||||
<details>
|
||||
<summary>Ubuntu 20.04 & 22.04 Build Instructions</summary>
|
||||
|
||||
@@ -44,12 +46,9 @@ apt-get update && apt-get install \
|
||||
curl \
|
||||
git \
|
||||
libboost-all-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libgmp-dev \
|
||||
libssl-dev \
|
||||
libusb-1.0-0-dev \
|
||||
llvm-11-dev \
|
||||
pkg-config
|
||||
llvm-11-dev
|
||||
```
|
||||
and perform the build:
|
||||
```
|
||||
@@ -72,12 +71,9 @@ apt-get update && apt-get install \
|
||||
curl \
|
||||
g++-8 \
|
||||
git \
|
||||
libcurl4-openssl-dev \
|
||||
libgmp-dev \
|
||||
libssl-dev \
|
||||
libusb-1.0-0-dev \
|
||||
llvm-7-dev \
|
||||
pkg-config \
|
||||
python3 \
|
||||
zlib1g-dev
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
file(GLOB BENCHMARK "*.cpp")
|
||||
add_executable( benchmark ${BENCHMARK} )
|
||||
|
||||
target_link_libraries( benchmark fc Boost::program_options )
|
||||
target_include_directories( benchmark PUBLIC
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
)
|
||||
@@ -0,0 +1,123 @@
|
||||
#include <iostream>
|
||||
|
||||
#include <fc/crypto/alt_bn128.hpp>
|
||||
|
||||
#include <benchmark.hpp>
|
||||
|
||||
namespace benchmark {
|
||||
|
||||
using bytes = std::vector<char>;
|
||||
using g1g2_pair = std::vector<std::string>;
|
||||
|
||||
void add_benchmarking() {
|
||||
std::vector<unsigned char> point1_raw = {
|
||||
12,175,215,144,98,95,151,228,179,85,31,170,172,159,40,255,250,252,68,28,235,65,172,180,69,164,153,29,187,239,220,201, // x
|
||||
18,102,219,76,79,148,120,28,39,149,42,172,41,248,120,249,255,69,42,51,160,239,13,219,239,183,77,174,217,158,130,10,}; // y
|
||||
std::vector<unsigned char> point2_raw = {
|
||||
12,144,10,32,104,85,103,36,222,232,48,152,108,217,40,145,230,48,8,54,0,7,134,164,7,10,139,110,95,205,124,121, // x
|
||||
22,254,176,251,18,168,78,220,142,100,102,113,58,176,83,186,212,62,154,138,235,135,34,46,237,117,54,36,198,40,79,73,}; // y
|
||||
|
||||
bytes point1, point2;
|
||||
point1.insert(point1.begin(), point1_raw.begin(), point1_raw.end());
|
||||
point2.insert(point2.begin(), point2_raw.begin(), point2_raw.end());
|
||||
|
||||
auto f = [&]() {
|
||||
auto res = fc::alt_bn128_add(point1, point2);
|
||||
if (std::holds_alternative<fc::alt_bn128_error>(res)) {
|
||||
std::cout << "alt_bn128_add failed: "
|
||||
<< (int)std::get<fc::alt_bn128_error>(res) << std::endl;
|
||||
}
|
||||
};
|
||||
|
||||
benchmarking("alt_bn128_add", f);
|
||||
}
|
||||
|
||||
void mul_benchmarking() {
|
||||
std::vector<unsigned char> point_raw = {
|
||||
12,175,215,144,98,95,151,228,179,85,31,170,172,159,40,255,250,252,68,28,235,65,172,180,69,164,153,29,187,239,220,201, // x
|
||||
18,102,219,76,79,148,120,28,39,149,42,172,41,248,120,249,255,69,42,51,160,239,13,219,239,183,77,174,217,158,130,10,}; // y
|
||||
std::vector<unsigned char> scaler_raw = {
|
||||
25,62,182,170,104,140,135,90,37,150,0,77,2,77,146,71,54,101,113,69,177,216,157,4,229,213,33,215,169,99,150,91, }; // scaler size 256 bits
|
||||
|
||||
bytes point, scaler;
|
||||
point.insert(point.begin(), point_raw.begin(), point_raw.end());
|
||||
scaler.insert(scaler.begin(), scaler_raw.begin(), scaler_raw.end());
|
||||
|
||||
auto f = [&]() {
|
||||
auto res = fc::alt_bn128_mul(point, scaler);
|
||||
if (std::holds_alternative<fc::alt_bn128_error>(res)) {
|
||||
std::cout << "alt_bn128_mul failed: "
|
||||
<< (int)std::get<fc::alt_bn128_error>(res) << std::endl;
|
||||
}
|
||||
};
|
||||
|
||||
benchmarking("alt_bn128_mul", f);
|
||||
}
|
||||
|
||||
void pair_benchmarking() {
|
||||
std::vector<unsigned char> g1_g2_pairs_raw = {
|
||||
/* pair 1 */
|
||||
12,175,215,144,98,95,151,228,179,85,31,170,172,159,40,255,250,252,68,28,235,65,172,180,69,164,153,29,187,239,220,201,18,102,219,76,79,148,120,28,39,149,42,172,41,248,120,249,255,69,42,51,160,239,13,219,239,183,77,174,217,158,130,10,
|
||||
46,24,234,176,148,82,198,136,44,30,157,18,217,25,49,241,63,197,2,151,14,150,136,210,114,4,74,124,145,225,131,139,13,60,0,50,236,103,39,15,150,226,246,189,209,113,0,46,151,39,41,6,87,119,228,213,45,225,29,234,161,110,43,87,3,237,74,227,93,23,171,129,49,118,228,173,154,111,168,220,161,46,140,103,155,56,168,207,254,90,228,76,188,232,25,34,44,102,159,35,193,216,177,31,131,247,226,19,170,222,26,227,86,37,81,149,202,144,188,126,120,168,9,195,32,169,147,161,
|
||||
/* pair,2,*/
|
||||
12,144,10,32,104,85,103,36,222,232,48,152,108,217,40,145,230,48,8,54,0,7,134,164,7,10,139,110,95,205,124,121,22,254,176,251,18,168,78,220,142,100,102,113,58,176,83,186,212,62,154,138,235,135,34,46,237,117,54,36,198,40,79,73,
|
||||
0,186,148,242,227,252,208,242,165,128,1,160,59,2,6,195,30,54,69,118,8,28,223,92,254,98,110,219,90,92,7,113,26,8,119,98,122,61,119,91,216,107,29,179,122,218,203,6,84,109,119,140,44,12,57,157,203,90,14,108,218,54,94,44,42,77,118,169,232,192,189,60,129,213,156,157,215,160,91,214,138,130,119,145,167,89,237,149,225,85,151,33,89,181,224,235,2,91,213,225,37,226,214,14,255,84,254,117,142,211,28,164,78,254,64,11,126,217,25,124,203,220,52,181,39,32,78,132,
|
||||
/* pair 3 */
|
||||
48,58,116,183,56,3,62,111,104,127,0,7,202,204,146,2,236,192,214,213,231,100,12,17,104,47,76,49,149,39,35,179,2,162,218,104,52,130,61,134,223,111,123,225,186,122,171,2,144,236,110,29,26,142,113,183,238,44,130,30,76,212,52,15,
|
||||
19,206,16,79,220,158,153,194,12,48,10,79,173,10,97,199,113,25,255,87,220,3,102,235,164,170,50,240,177,237,223,205,11,75,211,28,143,229,192,35,171,167,172,238,138,235,82,134,111,165,144,29,118,150,179,21,158,9,202,2,242,109,33,148,14,188,33,145,213,186,0,126,178,10,131,168,121,66,121,193,106,209,176,34,176,41,145,227,3,55,245,150,82,218,232,155,31,153,213,183,157,2,159,247,25,69,49,215,219,36,46,5,192,205,201,182,72,189,84,62,61,47,136,81,51,65,231,161,
|
||||
/* pair 4 */
|
||||
27,31,150,92,17,82,135,210,46,161,0,24,16,199,200,165,29,165,157,168,222,9,83,17,44,27,64,226,208,112,223,128,20,253,182,130,45,130,249,9,168,206,153,86,197,214,59,248,241,191,93,113,70,113,247,244,43,214,240,246,24,38,33,50,
|
||||
23,76,241,195,191,99,69,237,123,173,212,42,74,85,138,108,39,80,105,135,226,11,84,237,39,73,180,224,42,230,246,76,26,61,86,57,253,213,223,2,93,42,38,186,38,38,206,38,209,138,153,181,57,89,16,187,234,2,110,23,12,14,252,240,32,231,237,147,16,62,220,6,160,64,154,167,57,238,243,112,255,35,80,36,100,173,21,58,96,244,77,245,75,202,24,63,35,178,46,215,219,69,120,221,70,119,111,195,145,45,109,84,206,76,254,205,98,167,30,72,117,5,128,129,156,128,196,192,
|
||||
/* pair 5 */
|
||||
33,230,106,254,43,77,114,126,9,205,25,63,9,170,62,237,149,102,198,184,60,31,185,213,103,120,71,249,28,106,238,107,1,133,60,180,58,152,18,177,142,248,46,186,90,34,94,200,235,158,242,255,209,32,143,133,102,195,19,107,153,42,207,228,
|
||||
30,43,165,137,133,231,242,156,65,126,94,159,26,27,78,164,165,159,225,150,220,158,247,118,118,170,195,122,12,125,8,34,39,57,159,231,167,233,3,47,243,142,174,224,162,38,147,65,74,191,98,144,126,125,81,177,75,140,161,27,34,97,46,249,8,65,220,15,139,144,78,12,72,239,54,163,39,6,30,147,154,208,89,111,170,126,6,214,32,181,195,140,215,53,218,239,44,43,229,0,169,242,16,227,163,185,224,21,142,203,135,66,60,53,91,80,48,112,8,13,226,206,58,249,163,52,196,53,
|
||||
/* pair 6 */
|
||||
14,157,100,136,255,206,130,101,56,187,235,39,67,209,67,124,40,174,153,135,155,26,166,170,118,193,244,21,70,71,120,150,3,189,254,120,183,98,23,175,175,28,195,233,165,224,35,95,247,132,40,64,26,208,70,206,247,92,134,105,118,181,21,242,
|
||||
16,159,200,208,93,99,234,139,8,222,239,67,3,187,15,125,5,144,190,196,146,171,15,218,92,36,37,130,2,201,241,182,36,31,104,164,95,29,73,231,87,50,174,142,209,72,31,75,48,13,70,237,118,193,39,85,97,88,228,50,77,163,209,112,7,202,214,212,235,15,224,247,229,179,101,15,72,130,125,8,62,227,46,20,109,53,26,168,10,237,222,85,169,133,181,196,25,36,112,182,41,208,39,132,100,181,199,189,44,99,238,140,6,187,19,197,99,93,243,63,159,132,211,0,230,118,153,54,
|
||||
/* pair 7 */
|
||||
31,60,154,8,188,169,224,107,69,183,223,15,60,32,61,51,81,226,85,38,72,88,241,202,216,204,253,98,0,250,116,167,21,255,0,81,80,3,108,196,240,102,114,33,33,122,116,155,188,19,232,217,42,217,54,195,91,187,88,188,249,218,240,146,
|
||||
12,28,171,60,8,166,151,19,125,237,128,127,207,183,19,1,188,189,105,181,170,172,8,180,30,175,4,108,191,252,197,161,37,122,14,151,117,34,172,227,236,154,84,99,189,197,91,46,43,148,174,218,83,61,196,48,131,45,242,61,92,242,56,251,39,125,111,11,24,37,76,62,151,59,183,3,156,187,249,232,229,56,230,171,55,2,246,70,74,102,0,156,185,237,126,90,0,30,248,164,199,146,66,237,158,134,139,168,128,189,126,55,35,198,48,18,112,40,63,70,254,246,88,111,254,67,213,223,
|
||||
/* pair 8 */
|
||||
27,106,52,232,120,148,201,234,161,123,171,160,223,151,6,105,206,47,94,147,47,22,27,21,248,20,223,51,116,192,29,221,25,149,109,33,131,198,32,101,157,94,62,164,205,151,23,108,214,43,231,7,95,228,183,1,242,205,19,62,124,79,48,203,
|
||||
37,186,150,204,63,241,145,219,169,250,247,76,247,18,135,175,140,58,209,133,113,144,185,191,101,197,252,253,50,126,188,177,45,103,105,194,21,229,145,210,89,135,244,248,238,64,102,155,129,232,252,32,208,82,51,131,113,100,25,174,253,19,211,18,6,77,66,232,173,42,146,120,106,72,92,144,51,233,117,184,113,60,33,118,209,83,119,93,170,253,126,41,58,13,85,111,30,233,117,238,183,18,219,38,216,163,244,98,219,254,156,189,57,246,220,178,17,190,88,84,13,41,8,236,181,155,85,198,
|
||||
/* pair 9 */
|
||||
25,62,182,170,104,140,135,90,37,150,0,77,2,77,146,71,54,101,113,69,177,216,157,4,229,213,33,215,169,99,150,91,5,185,157,10,152,12,220,171,39,188,1,48,87,129,192,101,36,179,99,212,123,207,13,76,89,78,8,154,75,239,117,189,
|
||||
19,87,226,242,101,183,176,42,195,135,40,225,195,207,13,62,60,37,28,251,13,165,96,198,173,250,251,107,25,141,77,68,45,115,128,233,135,104,231,12,192,206,60,249,137,191,114,141,3,235,34,189,208,170,23,59,231,12,197,116,5,188,52,20,11,153,186,15,96,240,54,123,212,242,168,141,151,187,17,38,185,238,196,242,26,194,193,18,34,107,95,238,108,154,140,224,13,76,71,149,81,56,85,83,56,59,203,183,170,10,167,200,128,135,105,19,93,203,131,146,116,209,62,27,81,80,234,172,
|
||||
/* pair 10 */
|
||||
30,204,212,77,212,159,135,173,195,194,165,112,62,248,180,204,66,73,253,99,65,111,39,171,19,211,171,203,35,66,146,20,33,241,46,6,167,133,80,76,238,165,59,232,120,58,211,157,50,212,86,191,95,6,134,164,36,227,79,58,119,98,108,171,
|
||||
48,49,12,141,166,151,158,56,136,255,197,138,114,195,39,59,71,236,82,57,149,249,170,55,187,95,193,171,14,124,45,87,7,157,47,178,153,237,194,157,142,194,100,14,40,51,61,201,244,93,61,196,154,59,14,135,209,72,102,186,14,228,228,152,40,246,109,82,93,249,92,105,191,121,77,108,20,87,3,87,167,173,171,255,189,34,155,239,218,95,181,153,222,20,120,195,27,28,47,82,113,3,218,129,54,210,185,165,206,99,126,61,217,19,237,5,12,90,148,246,128,231,63,53,37,223,204,195
|
||||
};
|
||||
|
||||
// benchmarking 1 pair of points
|
||||
bytes g1_g2_1_pair;
|
||||
g1_g2_1_pair.insert(g1_g2_1_pair.begin(), g1_g2_pairs_raw.begin(), g1_g2_pairs_raw.begin() + 384);
|
||||
auto f_1_pair = [&]() {
|
||||
auto res = fc::alt_bn128_pair(g1_g2_1_pair, [](){});
|
||||
if (std::holds_alternative<fc::alt_bn128_error>(res)) {
|
||||
std::cout << "alt_bn128_pair 1 pair failed: "
|
||||
<< (int)std::get<fc::alt_bn128_error>(res) << std::endl;
|
||||
}
|
||||
};
|
||||
benchmarking("alt_bn128_pair (1 pair)", f_1_pair);
|
||||
|
||||
// benchmarking 10 pair of points
|
||||
bytes g1_g2_10_pairs;
|
||||
g1_g2_10_pairs.insert(g1_g2_10_pairs.begin(), g1_g2_pairs_raw.begin(), g1_g2_pairs_raw.end());
|
||||
auto f_10_pairs = [&]() {
|
||||
auto res = fc::alt_bn128_pair(g1_g2_10_pairs, [](){});
|
||||
if (std::holds_alternative<fc::alt_bn128_error>(res)) {
|
||||
std::cout << "alt_bn128_pair 10 pairs failed: "
|
||||
<< (int)std::get<fc::alt_bn128_error>(res) << std::endl;
|
||||
}
|
||||
};
|
||||
|
||||
benchmarking("alt_bn128_pair (10 pairs)", f_10_pairs);
|
||||
}
|
||||
|
||||
void alt_bn_128_benchmarking() {
|
||||
add_benchmarking();
|
||||
mul_benchmarking();
|
||||
pair_benchmarking();
|
||||
}
|
||||
|
||||
} // benchmark
|
||||
@@ -0,0 +1,82 @@
|
||||
#include <chrono>
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <locale>
|
||||
|
||||
#include <benchmark.hpp>
|
||||
|
||||
namespace benchmark {
|
||||
|
||||
// update this map when a new feature is supported
|
||||
// key is the name and value is the function doing benchmarking
|
||||
std::map<std::string, std::function<void()>> features {
|
||||
{ "alt_bn_128", alt_bn_128_benchmarking },
|
||||
{ "modexp", modexp_benchmarking },
|
||||
{ "key", key_benchmarking },
|
||||
{ "hash", hash_benchmarking },
|
||||
{ "blake2", blake2_benchmarking },
|
||||
};
|
||||
|
||||
// values to control cout format
|
||||
constexpr auto name_width = 28;
|
||||
constexpr auto runs_width = 5;
|
||||
constexpr auto time_width = 12;
|
||||
constexpr auto ns_width = 2;
|
||||
|
||||
uint32_t num_runs = 1;
|
||||
|
||||
std::map<std::string, std::function<void()>> get_features() {
|
||||
return features;
|
||||
}
|
||||
|
||||
void set_num_runs(uint32_t runs) {
|
||||
num_runs = runs;
|
||||
}
|
||||
|
||||
void print_header() {
|
||||
std::cout << std::left << std::setw(name_width) << "function"
|
||||
<< std::setw(runs_width) << "runs"
|
||||
<< std::setw(time_width + ns_width) << std::right << "average"
|
||||
<< std::setw(time_width + ns_width) << "minimum"
|
||||
<< std::setw(time_width + ns_width) << "maximum"
|
||||
<< std::endl << std::endl;
|
||||
}
|
||||
|
||||
void print_results(std::string name, uint32_t runs, uint64_t total, uint64_t min, uint64_t max) {
|
||||
std::cout.imbue(std::locale(""));
|
||||
std::cout
|
||||
<< std::setw(name_width) << std::left << name
|
||||
<< std::setw(runs_width) << runs
|
||||
// std::fixed for not printing 1234 in 1.234e3.
|
||||
// setprecision(0) for not printing fractions
|
||||
<< std::right << std::fixed << std::setprecision(0)
|
||||
<< std::setw(time_width) << total/runs << std::setw(ns_width) << " ns"
|
||||
<< std::setw(time_width) << min << std::setw(ns_width) << " ns"
|
||||
<< std::setw(time_width) << max << std::setw(ns_width) << " ns"
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
bytes to_bytes(const std::string& source) {
|
||||
bytes output(source.length()/2);
|
||||
fc::from_hex(source, output.data(), output.size());
|
||||
return output;
|
||||
};
|
||||
|
||||
void benchmarking(std::string name, const std::function<void()>& func) {
|
||||
uint64_t total {0}, min {std::numeric_limits<uint64_t>::max()}, max {0};
|
||||
|
||||
for (auto i = 0U; i < num_runs; ++i) {
|
||||
auto start_time = std::chrono::high_resolution_clock::now();
|
||||
func();
|
||||
auto end_time = std::chrono::high_resolution_clock::now();
|
||||
|
||||
uint64_t duration = std::chrono::duration_cast<std::chrono::nanoseconds>(end_time - start_time).count();
|
||||
total += duration;
|
||||
min = std::min(min, duration);
|
||||
max = std::max(max, duration);
|
||||
}
|
||||
|
||||
print_results(name, num_runs, total, min, max);
|
||||
}
|
||||
|
||||
} // benchmark
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include <fc/crypto/hex.hpp>
|
||||
|
||||
namespace benchmark {
|
||||
using bytes = std::vector<char>;
|
||||
|
||||
void set_num_runs(uint32_t runs);
|
||||
std::map<std::string, std::function<void()>> get_features();
|
||||
void print_header();
|
||||
bytes to_bytes(const std::string& source);
|
||||
|
||||
void alt_bn_128_benchmarking();
|
||||
void modexp_benchmarking();
|
||||
void key_benchmarking();
|
||||
void hash_benchmarking();
|
||||
void blake2_benchmarking();
|
||||
|
||||
void benchmarking(std::string name, const std::function<void()>& func);
|
||||
|
||||
} // benchmark
|
||||
@@ -0,0 +1,21 @@
|
||||
#include <fc/crypto/blake2.hpp>
|
||||
|
||||
#include <benchmark.hpp>
|
||||
|
||||
namespace benchmark {
|
||||
|
||||
void blake2_benchmarking() {
|
||||
uint32_t _rounds = 0x0C;
|
||||
bytes _h = to_bytes( "48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b");
|
||||
bytes _m = to_bytes("6162630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
|
||||
bytes _t0_offset = to_bytes("0300000000000000");
|
||||
bytes _t1_offset = to_bytes("0000000000000000");
|
||||
bool _f = false;
|
||||
|
||||
auto blake2_f = [&]() {
|
||||
fc::blake2b(_rounds, _h, _m, _t0_offset, _t1_offset, _f, [](){});;
|
||||
};
|
||||
benchmarking("blake2", blake2_f);
|
||||
}
|
||||
|
||||
} // benchmark
|
||||
@@ -0,0 +1,89 @@
|
||||
#include <fc/crypto/hex.hpp>
|
||||
#include <fc/crypto/sha1.hpp>
|
||||
#include <fc/crypto/sha3.hpp>
|
||||
#include <fc/crypto/sha256.hpp>
|
||||
#include <fc/crypto/sha512.hpp>
|
||||
#include <fc/crypto/ripemd160.hpp>
|
||||
#include <fc/utility.hpp>
|
||||
|
||||
#include <benchmark.hpp>
|
||||
|
||||
using namespace fc;
|
||||
|
||||
namespace benchmark {
|
||||
|
||||
void hash_benchmarking() {
|
||||
std::string small_message = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01";
|
||||
|
||||
// build a large message
|
||||
constexpr auto large_msg_size = 4096;
|
||||
std::string large_message;
|
||||
large_message.reserve(large_msg_size);
|
||||
uint32_t num_concats = large_msg_size/small_message.length();
|
||||
for (uint32_t i = 0; i < num_concats; ++i) {
|
||||
large_message += small_message;
|
||||
}
|
||||
|
||||
auto sha1_small_msg = [&]() {
|
||||
fc::sha1::hash(small_message);
|
||||
};
|
||||
benchmarking("sha1 (" + std::to_string(small_message.length()) + " bytes)", sha1_small_msg);
|
||||
|
||||
auto sha1_large_msg = [&]() {
|
||||
fc::sha1::hash(large_message);
|
||||
};
|
||||
benchmarking("sha1 (" + std::to_string(large_message.length()) + " bytes)", sha1_large_msg);
|
||||
|
||||
auto sha256_small_msg = [&]() {
|
||||
fc::sha256::hash(small_message);
|
||||
};
|
||||
benchmarking("sha256 (" + std::to_string(small_message.length()) + " bytes)", sha256_small_msg);
|
||||
|
||||
auto sha256_large_msg = [&]() {
|
||||
fc::sha256::hash(large_message);
|
||||
};
|
||||
benchmarking("sha256 (" + std::to_string(large_message.length()) + " bytes)", sha256_large_msg);
|
||||
|
||||
auto sha512_small_msg = [&]() {
|
||||
fc::sha512::hash(small_message);
|
||||
};
|
||||
benchmarking("sha512 (" + std::to_string(small_message.length()) + " bytes)", sha512_small_msg);
|
||||
|
||||
auto sha512_large_msg = [&]() {
|
||||
fc::sha512::hash(large_message);
|
||||
};
|
||||
benchmarking("sha512 (" + std::to_string(large_message.length()) + " bytes)", sha512_large_msg);
|
||||
|
||||
auto ripemd160_small_msg = [&]() {
|
||||
fc::ripemd160::hash(small_message);
|
||||
};
|
||||
benchmarking("ripemd160 (" + std::to_string(small_message.length()) + " bytes)", ripemd160_small_msg);
|
||||
|
||||
auto ripemd160_large_msg = [&]() {
|
||||
fc::ripemd160::hash(large_message);
|
||||
};
|
||||
benchmarking("ripemd160 (" + std::to_string(large_message.length()) + " bytes)", ripemd160_large_msg);
|
||||
|
||||
auto sha3_small_msg = [&]() {
|
||||
fc::sha3::hash(small_message, true);
|
||||
};
|
||||
benchmarking("sha3-256 (" + std::to_string(small_message.length()) + " bytes)", sha3_small_msg);
|
||||
|
||||
auto sha3_large_msg = [&]() {
|
||||
fc::sha3::hash(large_message, true);
|
||||
};
|
||||
benchmarking("sha3-256 (" + std::to_string(large_message.length()) + " bytes)", sha3_large_msg);
|
||||
|
||||
auto keccak_small_msg = [&]() {
|
||||
fc::sha3::hash(small_message, false);
|
||||
};
|
||||
benchmarking("keccak256 (" + std::to_string(small_message.length()) + " bytes)", keccak_small_msg);
|
||||
|
||||
auto keccak_large_msg = [&]() {
|
||||
fc::sha3::hash(large_message, false);
|
||||
};
|
||||
benchmarking("keccak256 (" + std::to_string(large_message.length()) + " bytes)", keccak_large_msg);
|
||||
|
||||
}
|
||||
|
||||
} // benchmark
|
||||
@@ -0,0 +1,109 @@
|
||||
#include <fc/crypto/public_key.hpp>
|
||||
#include <fc/crypto/private_key.hpp>
|
||||
#include <fc/crypto/signature.hpp>
|
||||
#include <fc/crypto/k1_recover.hpp>
|
||||
|
||||
#include <benchmark.hpp>
|
||||
|
||||
using namespace fc::crypto;
|
||||
using namespace fc;
|
||||
using namespace std::literals;
|
||||
|
||||
namespace benchmark {
|
||||
|
||||
void k1_sign_benchmarking() {
|
||||
auto payload = "Test Cases";
|
||||
auto digest = sha256::hash(payload, const_strlen(payload));
|
||||
auto private_key_string = std::string("5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3");
|
||||
auto key = private_key(private_key_string);
|
||||
|
||||
auto sign_non_canonical_f = [&]() {
|
||||
key.sign(digest, false);
|
||||
};
|
||||
benchmarking("k1_sign_non_canonical", sign_non_canonical_f);
|
||||
}
|
||||
|
||||
void k1_recover_benchmarking() {
|
||||
auto signature = to_bytes( "1b323dd47a1dd5592c296ee2ee12e0af38974087a475e99098a440284f19c1f7642fa0baa10a8a3ab800dfdbe987dee68a09b6fa3db45a5cc4f3a5835a1671d4dd");
|
||||
auto digest = to_bytes( "92390316873c5a9d520b28aba61e7a8f00025ac069acd9c4d2a71d775a55fa5f");
|
||||
|
||||
auto recover_f = [&]() {
|
||||
fc::k1_recover(signature, digest);
|
||||
};
|
||||
benchmarking("k1_recover", recover_f);
|
||||
}
|
||||
|
||||
void k1_benchmarking() {
|
||||
k1_sign_benchmarking();
|
||||
k1_recover_benchmarking();
|
||||
}
|
||||
|
||||
void r1_benchmarking() {
|
||||
auto payload = "Test Cases";
|
||||
auto digest = sha256::hash(payload, const_strlen(payload));
|
||||
auto key = private_key::generate<r1::private_key_shim>();
|
||||
|
||||
auto sign_f = [&]() {
|
||||
key.sign(digest);
|
||||
};
|
||||
benchmarking("r1_sign", sign_f);
|
||||
|
||||
auto sig = key.sign(digest);
|
||||
auto recover_f = [&]() {
|
||||
public_key(sig, digest);;
|
||||
};
|
||||
benchmarking("r1_recover", recover_f);
|
||||
}
|
||||
|
||||
static fc::crypto::webauthn::signature make_webauthn_sig(const fc::crypto::r1::private_key& priv_key,
|
||||
std::vector<uint8_t>& auth_data,
|
||||
const std::string& json) {
|
||||
|
||||
//webauthn signature is sha256(auth_data || client_data_hash)
|
||||
fc::sha256 client_data_hash = fc::sha256::hash(json);
|
||||
fc::sha256::encoder e;
|
||||
e.write((char*)auth_data.data(), auth_data.size());
|
||||
e.write(client_data_hash.data(), client_data_hash.data_size());
|
||||
|
||||
r1::compact_signature sig = priv_key.sign_compact(e.result());
|
||||
|
||||
char buff[8192];
|
||||
datastream<char*> ds(buff, sizeof(buff));
|
||||
fc::raw::pack(ds, sig);
|
||||
fc::raw::pack(ds, auth_data);
|
||||
fc::raw::pack(ds, json);
|
||||
ds.seekp(0);
|
||||
|
||||
fc::crypto::webauthn::signature ret;
|
||||
fc::raw::unpack(ds, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void wa_benchmarking() {
|
||||
static const r1::private_key priv = fc::crypto::r1::private_key::generate();
|
||||
static const fc::sha256 d = fc::sha256::hash("sup"s);
|
||||
static const fc::sha256 origin_hash = fc::sha256::hash("fctesting.invalid"s);
|
||||
std::string json = "{\"origin\":\"https://fctesting.invalid\",\"type\":\"webauthn.get\", \"challenge\":\"" + fc::base64url_encode(d.data(), d.data_size()) + "\"}";
|
||||
std::vector<uint8_t> auth_data(37);
|
||||
memcpy(auth_data.data(), origin_hash.data(), sizeof(origin_hash));
|
||||
|
||||
auto sign = [&]() {
|
||||
make_webauthn_sig(priv, auth_data, json);
|
||||
};
|
||||
benchmarking("webauthn_sign", sign);
|
||||
|
||||
auto sig = make_webauthn_sig(priv, auth_data, json);
|
||||
auto recover= [&]() {
|
||||
sig.recover(d, true);
|
||||
};
|
||||
benchmarking("webauthn_recover", recover);
|
||||
}
|
||||
|
||||
void key_benchmarking() {
|
||||
k1_benchmarking();
|
||||
r1_benchmarking();
|
||||
wa_benchmarking();
|
||||
}
|
||||
|
||||
} // benchmark
|
||||
@@ -0,0 +1,80 @@
|
||||
#include <iostream>
|
||||
|
||||
#include <boost/program_options.hpp>
|
||||
|
||||
#include <benchmark.hpp>
|
||||
|
||||
namespace bpo = boost::program_options;
|
||||
using bpo::options_description;
|
||||
using bpo::variables_map;
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
uint32_t num_runs = 1;
|
||||
std::string feature_name;
|
||||
|
||||
auto features = benchmark::get_features();
|
||||
|
||||
options_description cli ("benchmark command line options");
|
||||
cli.add_options()
|
||||
("feature,f", bpo::value<std::string>(), "feature to be benchmarked; if this option is not present, all features are benchmarked.")
|
||||
("list,l", "list of supported features")
|
||||
("runs,r", bpo::value<uint32_t>(&num_runs)->default_value(1000), "the number of times running a function during benchmarking")
|
||||
("help,h", "benchmark functions, and report average, minimum, and maximum execution time in nanoseconds");
|
||||
|
||||
variables_map vmap;
|
||||
try {
|
||||
bpo::store(bpo::parse_command_line(argc, argv, cli), vmap);
|
||||
bpo::notify(vmap);
|
||||
|
||||
if (vmap.count("help") > 0) {
|
||||
cli.print(std::cerr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (vmap.count("list") > 0) {
|
||||
auto first = true;
|
||||
std::cout << "Supported features are ";
|
||||
for (auto& [name, f]: features) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
std::cout << ", ";
|
||||
}
|
||||
std::cout << name;
|
||||
}
|
||||
std::cout << std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (vmap.count("feature") > 0) {
|
||||
feature_name = vmap["feature"].as<std::string>();
|
||||
if (features.find(feature_name) == features.end()) {
|
||||
std::cout << feature_name << " is not supported" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
} catch (bpo::unknown_option &ex) {
|
||||
std::cerr << ex.what() << std::endl;
|
||||
cli.print (std::cerr);
|
||||
return 1;
|
||||
} catch( ... ) {
|
||||
std::cerr << "unknown exception" << std::endl;
|
||||
}
|
||||
|
||||
benchmark::set_num_runs(num_runs);
|
||||
benchmark::print_header();
|
||||
|
||||
if (feature_name.empty()) {
|
||||
for (auto& [name, f]: features) {
|
||||
std::cout << name << ":" << std::endl;
|
||||
f();
|
||||
std::cout << std::endl;
|
||||
}
|
||||
} else {
|
||||
std::cout << feature_name << ":" << std::endl;
|
||||
features[feature_name]();
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
#include <fc/crypto/modular_arithmetic.hpp>
|
||||
|
||||
#include <random>
|
||||
|
||||
#include <benchmark.hpp>
|
||||
|
||||
namespace benchmark {
|
||||
|
||||
void modexp_benchmarking() {
|
||||
std::mt19937 r(0x11223344);
|
||||
|
||||
auto generate_random_bytes = [](std::mt19937& rand_eng, unsigned int num_bytes) {
|
||||
std::vector<char> result(num_bytes);
|
||||
|
||||
uint_fast32_t v = 0;
|
||||
for(int byte_pos = 0, end = result.size(); byte_pos < end; ++byte_pos) {
|
||||
if ((byte_pos & 0x03) == 0) { // if divisible by 4
|
||||
v = rand_eng();
|
||||
}
|
||||
result[byte_pos] = v & 0xFF;
|
||||
v >>= 8;
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
static constexpr unsigned int start_num_bytes = 128; // 64
|
||||
static constexpr unsigned int end_num_bytes = 256; // 512
|
||||
static constexpr unsigned int delta_num_bytes = 128; // 64
|
||||
|
||||
static_assert(start_num_bytes <= end_num_bytes);
|
||||
static_assert(delta_num_bytes > 0);
|
||||
static_assert((end_num_bytes - start_num_bytes) % delta_num_bytes == 0);
|
||||
|
||||
for (unsigned int n = start_num_bytes, slot = 0; n <= end_num_bytes; n += delta_num_bytes, ++slot) {
|
||||
auto base = generate_random_bytes(r, n);
|
||||
auto exponent = generate_random_bytes(r, n);
|
||||
auto modulus = generate_random_bytes(r, n);
|
||||
|
||||
auto f = [&]() {
|
||||
fc::modexp(base, exponent, modulus);
|
||||
};
|
||||
|
||||
benchmarking(std::to_string(n*8) + " bit width", f);
|
||||
}
|
||||
|
||||
// Running the above benchmark (using commented values for num_trials and *_num_bytes) with a release build on an AMD 3.4 GHz CPU
|
||||
// provides average durations for executing mod_exp for increasing bit sizes for the value.
|
||||
|
||||
// For example: with 512-bit values, the average duration is approximately 40 microseconds; with 1024-bit values, the average duration
|
||||
// is approximately 260 microseconds; with 2048-bit values, the average duration is approximately 2 milliseconds; and, with 4096-bit
|
||||
// values, the average duration is approximately 14 milliseconds.
|
||||
|
||||
// It appears that a model of the average time that scales quadratically with the bit size fits the empirically generated data well.
|
||||
// TODO: See if theoretical analysis of the modular exponentiation algorithm also justifies quadratic scaling.
|
||||
}
|
||||
|
||||
} // benchmark
|
||||
@@ -1,71 +0,0 @@
|
||||
---
|
||||
content_title: Install Prebuilt Binaries
|
||||
---
|
||||
|
||||
[[info | Previous Builds]]
|
||||
| If you have previously installed EOSIO from source using shell scripts, you must first run the [Uninstall Script](01_build-from-source/01_shell-scripts/05_uninstall-eosio.md) before installing any prebuilt binaries on the same OS.
|
||||
|
||||
## Prebuilt Binaries
|
||||
|
||||
Prebuilt EOSIO software packages are available for the operating systems below. Find and follow the instructions for your OS:
|
||||
|
||||
### Mac OS X:
|
||||
|
||||
#### Mac OS X Brew Install
|
||||
```sh
|
||||
brew tap eosio/eosio
|
||||
brew install eosio
|
||||
```
|
||||
#### Mac OS X Brew Uninstall
|
||||
```sh
|
||||
brew remove eosio
|
||||
```
|
||||
|
||||
### Ubuntu Linux:
|
||||
|
||||
#### Ubuntu 18.04 Package Install
|
||||
```sh
|
||||
wget https://github.com/eosio/eos/releases/download/v2.0.13/eosio_2.0.13-1-ubuntu-18.04_amd64.deb
|
||||
sudo apt install ./eosio_2.0.13-1-ubuntu-18.04_amd64.deb
|
||||
```
|
||||
#### Ubuntu 16.04 Package Install
|
||||
```sh
|
||||
wget https://github.com/eosio/eos/releases/download/v2.0.13/eosio_2.0.13-1-ubuntu-16.04_amd64.deb
|
||||
sudo apt install ./eosio_2.0.13-1-ubuntu-16.04_amd64.deb
|
||||
```
|
||||
#### Ubuntu Package Uninstall
|
||||
```sh
|
||||
sudo apt remove eosio
|
||||
```
|
||||
|
||||
### RPM-based (CentOS, Amazon Linux, etc.):
|
||||
|
||||
#### RPM Package Install
|
||||
```sh
|
||||
wget https://github.com/eosio/eos/releases/download/v2.0.13/eosio-2.0.13-1.el7.x86_64.rpm
|
||||
sudo yum install ./eosio-2.0.13-1.el7.x86_64.rpm
|
||||
```
|
||||
#### RPM Package Uninstall
|
||||
```sh
|
||||
sudo yum remove eosio
|
||||
```
|
||||
|
||||
## Location of EOSIO binaries
|
||||
|
||||
After installing the prebuilt packages, the actual EOSIO binaries will be located under:
|
||||
* `/usr/opt/eosio/<version-string>/bin` (Linux-based); or
|
||||
* `/usr/local/Cellar/eosio/<version-string>/bin` (MacOS)
|
||||
|
||||
where `version-string` is the EOSIO version that was installed.
|
||||
|
||||
Also, soft links for each EOSIO program (`nodeos`, `cleos`, `keosd`, etc.) will be created under `usr/bin` or `usr/local/bin` to allow them to be executed from any directory.
|
||||
|
||||
## Previous Versions
|
||||
|
||||
To install previous versions of the EOSIO prebuilt binaries:
|
||||
|
||||
1. Browse to https://github.com/EOSIO/eos/tags and select the actual version of the EOSIO software you need to install.
|
||||
|
||||
2. Scroll down past the `Release Notes` and download the package or archive that you need for your OS.
|
||||
|
||||
3. Follow the instructions on the first paragraph above to install the selected prebuilt binaries on the given OS.
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
content_title: Build EOSIO from Source on Other Unix-based OS
|
||||
---
|
||||
|
||||
**Please keep in mind that instructions for building from source on other unsupported operating systems provided here should be considered experimental and provided AS-IS on a best-effort basis and may not be fully featured.**
|
||||
|
||||
### Using DUNE
|
||||
|
||||
For the official multi-platform support try [Docker Utilities for Node Execution](https://github.com/eosnetworkfoundation/DUNE) which runs in an ubuntu image via a docker container.
|
||||
|
||||
**A Warning On Parallel Compilation Jobs (`-j` flag)**: When building C/C++ software often the build is performed in parallel via a command such as `make -j $(nproc)` which uses the number of CPU cores as the number of compilation jobs to perform simultaneously. However, be aware that some compilation units (.cpp files) in mandel are extremely complex and will consume nearly 4GB of memory to compile. You may need to reduce the level of parallelization depending on the amount of memory on your build host. e.g. instead of `make -j $(nproc)` run `make -j2`. Failures due to memory exhaustion will typically but not always manifest as compiler crashes.
|
||||
|
||||
Generally we recommend performing what we refer to as a "pinned build" which ensures the compiler and boost version remain the same between builds of different mandel versions (mandel requires these versions remain the same otherwise its state needs to be repopulated from a portable snapshot).
|
||||
|
||||
<details>
|
||||
<summary>FreeBSD 13.1 Build Instructions</summary>
|
||||
|
||||
Install required dependencies:
|
||||
```
|
||||
pkg update && pkg install \
|
||||
git \
|
||||
cmake \
|
||||
curl \
|
||||
boost-all \
|
||||
python3 \
|
||||
openssl \
|
||||
llvm11 \
|
||||
pkgconf
|
||||
```
|
||||
and perform the build (please note that FreeBSD 13.1 comes with llvm13 by default so you should provide clang11 options to cmake):
|
||||
```
|
||||
git submodule update --init --recursive
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_CXX_COMPILER=clang++11 -DCMAKE_C_COMPILER=clang11 -DCMAKE_BUILD_TYPE=Release ..
|
||||
make -j $(nproc) package
|
||||
```
|
||||
</details>
|
||||
|
||||
### Running Tests
|
||||
|
||||
When building from source it's recommended to run at least what we refer to as the "parallelizable tests". Not included by default in the "parallelizable tests" are the WASM spec tests which can add additional coverage and can also be run in parallel.
|
||||
|
||||
```
|
||||
cd build
|
||||
|
||||
# "parallelizable tests": the minimum test set that should be run
|
||||
ctest -j $(nproc) -LE _tests
|
||||
|
||||
# Also consider running the WASM spec tests for more coverage
|
||||
ctest -j $(nproc) -L wasm_spec_tests
|
||||
```
|
||||
|
||||
Some other tests are available and recommended but be aware they can be sensitive to other software running on the same host and they may **SIGKILL** other nodeos instances running on the host.
|
||||
```
|
||||
cd build
|
||||
|
||||
# These tests can't run in parallel but are recommended.
|
||||
ctest -L "nonparallelizable_tests"
|
||||
|
||||
# These tests can't run in parallel. They also take a long time to run.
|
||||
ctest -L "long_running_tests"
|
||||
```
|
||||
@@ -1,31 +0,0 @@
|
||||
---
|
||||
content_title: Download EOSIO Source
|
||||
---
|
||||
|
||||
To download the EOSIO source code, clone the `eos` repo and its submodules. It is adviced to create a home `eosio` folder first and download all the EOSIO related software there:
|
||||
|
||||
```sh
|
||||
mkdir -p ~/eosio && cd ~/eosio
|
||||
git clone --recursive https://github.com/EOSIO/eos
|
||||
```
|
||||
|
||||
## Update Submodules
|
||||
|
||||
If a repository is cloned without the `--recursive` flag, the submodules *must* be updated before starting the build process:
|
||||
|
||||
```sh
|
||||
cd ~/eosio/eos
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
## Pull Changes
|
||||
|
||||
When pulling changes, especially after switching branches, the submodules *must* also be updated. This can be achieved with the `git submodule` command as above, or using `git pull` directly:
|
||||
|
||||
```sh
|
||||
[git checkout <branch>] (optional)
|
||||
git pull --recurse-submodules
|
||||
```
|
||||
|
||||
[[info | What's Next?]]
|
||||
| [Build EOSIO binaries](02_build-eosio-binaries.md)
|
||||
@@ -1,18 +0,0 @@
|
||||
---
|
||||
content_title: Build EOSIO Binaries
|
||||
---
|
||||
|
||||
[[info | Shell Scripts]]
|
||||
| The build script is one of various automated shell scripts provided in the EOSIO repository for building, installing, and optionally uninstalling the EOSIO software and its dependencies. They are available in the `eos/scripts` folder.
|
||||
|
||||
The build script first installs all dependencies and then builds EOSIO. The script supports these [Operating Systems](../../index.md#supported-operating-systems). To run it, first change to the `~/eosio/eos` folder, then launch the script:
|
||||
|
||||
```sh
|
||||
cd ~/eosio/eos
|
||||
./scripts/eosio_build.sh
|
||||
```
|
||||
|
||||
The build process writes temporary content to the `eos/build` folder. After building, the program binaries can be found at `eos/build/programs`.
|
||||
|
||||
[[info | What's Next?]]
|
||||
| [Installing EOSIO](03_install-eosio-binaries.md) is strongly recommended after building from source as it makes local development significantly more friendly.
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
content_title: Install EOSIO Binaries
|
||||
---
|
||||
|
||||
## EOSIO install script
|
||||
|
||||
For ease of contract development, content can be installed at the `/usr/local` folder using the `eosio_install.sh` script within the `eos/scripts` folder. Adequate permission is required to install on system folders:
|
||||
|
||||
```sh
|
||||
cd ~/eosio/eos
|
||||
./scripts/eosio_install.sh
|
||||
```
|
||||
|
||||
## EOSIO manual install
|
||||
|
||||
In lieu of the `eosio_install.sh` script, you can install the EOSIO binaries directly by invoking `make install` within the `eos/build` folder. Again, adequate permission is required to install on system folders:
|
||||
|
||||
```sh
|
||||
cd ~/eosio/eos/build
|
||||
make install
|
||||
```
|
||||
|
||||
[[info | What's Next?]]
|
||||
| Configure and use [Nodeos](../../../01_nodeos/index.md), or optionally [Test the EOSIO binaries](04_test-eosio-binaries.md).
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
content_title: Test EOSIO Binaries
|
||||
---
|
||||
|
||||
Optionally, a set of tests can be run against your build to perform some basic validation of the EOSIO software installation.
|
||||
|
||||
To run the test suite after building, run:
|
||||
|
||||
```sh
|
||||
cd ~/eosio/eos/build
|
||||
make test
|
||||
```
|
||||
|
||||
[[info | What's Next?]]
|
||||
| Configure and use [Nodeos](../../../01_nodeos/index.md).
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
content_title: Uninstall EOSIO
|
||||
---
|
||||
|
||||
If you have previously built EOSIO from source and now wish to install the prebuilt binaries, or to build from source again, it is recommended to run the `eosio_uninstall.sh` script within the `eos/scripts` folder:
|
||||
|
||||
```sh
|
||||
cd ~/eosio/eos
|
||||
./scripts/eosio_uninstall.sh
|
||||
```
|
||||
|
||||
[[info | Uninstall Dependencies]]
|
||||
| The uninstall script will also prompt the user to uninstall EOSIO dependencies. This is recommended if installing prebuilt EOSIO binaries or building EOSIO for the first time.
|
||||
@@ -1,17 +0,0 @@
|
||||
---
|
||||
content_title: Shell Scripts
|
||||
---
|
||||
|
||||
[[info | Did you know?]]
|
||||
| Shell scripts automate the process of building, installing, testing, and uninstalling the EOSIO software and dependencies.
|
||||
|
||||
To build EOSIO from the source code using shell scripts, visit the sections below:
|
||||
|
||||
1. [Download EOSIO Source](01_download-eosio-source.md)
|
||||
2. [Build EOSIO Binaries](02_build-eosio-binaries.md)
|
||||
3. [Install EOSIO Binaries](03_install-eosio-binaries.md)
|
||||
4. [Test EOSIO Binaries](04_test-eosio-binaries.md)
|
||||
5. [Uninstall EOSIO](05_uninstall-eosio.md)
|
||||
|
||||
[[info | Building EOSIO is for Advanced Developers]]
|
||||
| If you are new to EOSIO, it is recommended that you install the [EOSIO Prebuilt Binaries](../../00_install-prebuilt-binaries.md) instead of building from source.
|
||||
@@ -1,45 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO Software Dependencies
|
||||
---
|
||||
|
||||
The EOSIO software requires specific software dependencies to build the EOSIO binaries. These dependencies can be built from source or installed from binaries directly. Dependencies can be pinned to a specific version release or unpinned to the current version, usually the latest one. The main EOSIO dependencies hosted outside the EOSIO repos are:
|
||||
|
||||
* Clang - the C++17 compliant compiler used by EOSIO
|
||||
* CMake - the build system used by EOSIO
|
||||
* Boost - the C++ Boost library used by EOSIO
|
||||
* OpenSSL - the secure communications (and crypto) library
|
||||
* LLVM - the LLVM compiler/toolchain infrastructure
|
||||
|
||||
Other dependencies are either inside the EOSIO repo, such as the `secp256k1` elliptic curve DSA library, or they are otherwise used for testing or housekeeping purposes, such as:
|
||||
|
||||
* automake, autoconf, autotools
|
||||
* doxygen, graphviz
|
||||
* python2, python3
|
||||
* bzip2, zlib
|
||||
* etc.
|
||||
|
||||
## Pinned Dependencies
|
||||
|
||||
To guarantee interoperability across different EOSIO software releases, developers may opt to reproduce the exact "pinned" dependency binaries used in-house. Block producers may want to install and run the EOSIO software built with these pinned dependencies for portability and stability reasons. Pinned dependencies are usually built from source.
|
||||
|
||||
## Unpinned Dependencies
|
||||
|
||||
Regular users or application developers may prefer installing unpinned versions of the EOSIO dependencies. These correspond to the latest or otherwise stable versions of the dependencies. The main advantage of unpinned dependencies is reduced installation times and perhaps better performance. Pinned dependencies are typically installed from binaries.
|
||||
|
||||
## Automatic Installation of Dependencies
|
||||
|
||||
EOSIO dependencies can be built or installed automatically from the [Build Script](../01_shell-scripts/02_build-eosio-binaries.md) when building EOSIO from source. To build the pinned dependencies, the optional `-P` parameter can be specified when invoking the script. Otherwise, the unpinned dependencies will be installed instead, with the exception of `boost` and `cmake` which are always pinned:
|
||||
|
||||
```sh
|
||||
cd ~/eosio/eos
|
||||
./scripts/eosio_build.sh [-P]
|
||||
```
|
||||
|
||||
### Unupported Platforms
|
||||
|
||||
EOSIO dependencies can also be built and installed manually by reproducing the same commands invoked by the [Build Script](../01_shell-scripts/02_build-eosio-binaries.md). The actual commands can be generated from the script directly by exporting specific environment variables and CLI parameters to the script when invoked:
|
||||
|
||||
```sh
|
||||
cd ~/eosio/eos
|
||||
export VERBOSE=true && export DRYRUN=true && ./scripts/eosio_build.sh -y [-P]
|
||||
```
|
||||
@@ -1,92 +0,0 @@
|
||||
---
|
||||
content_title: Amazon Linux 2
|
||||
---
|
||||
|
||||
This section contains shell commands to manually download, build, install, test, and uninstall EOSIO and dependencies on Amazon Linux 2.
|
||||
|
||||
[[info | Building EOSIO is for Advanced Developers]]
|
||||
| If you are new to EOSIO, it is recommended that you install the [EOSIO Prebuilt Binaries](../../../00_install-prebuilt-binaries.md) instead of building from source.
|
||||
|
||||
Select a task below, then copy/paste the shell commands to a Unix terminal to execute:
|
||||
|
||||
* [Download EOSIO Repository](#download-eosio-repository)
|
||||
* [Install EOSIO Dependencies](#install-eosio-dependencies)
|
||||
* [Build EOSIO](#build-eosio)
|
||||
* [Install EOSIO](#install-eosio)
|
||||
* [Test EOSIO](#test-eosio)
|
||||
* [Uninstall EOSIO](#uninstall-eosio)
|
||||
|
||||
[[info | Building EOSIO on another OS?]]
|
||||
| Visit the [Build EOSIO from Source](../../index.md) section.
|
||||
|
||||
## Download EOSIO Repository
|
||||
These commands set the EOSIO directories, install git, and clone the EOSIO repository.
|
||||
```sh
|
||||
# set EOSIO directories
|
||||
export EOSIO_LOCATION=~/eosio/eos
|
||||
export EOSIO_INSTALL_LOCATION=$EOSIO_LOCATION/../install
|
||||
mkdir -p $EOSIO_INSTALL_LOCATION
|
||||
# install git
|
||||
yum update -y && yum install -y git
|
||||
# clone EOSIO repository
|
||||
git clone https://github.com/EOSIO/eos.git $EOSIO_LOCATION
|
||||
cd $EOSIO_LOCATION && git submodule update --init --recursive
|
||||
```
|
||||
|
||||
## Install EOSIO Dependencies
|
||||
These commands install the EOSIO software dependencies. Make sure to [Download the EOSIO Repository](#download-eosio-repository) first and set the EOSIO directories.
|
||||
```sh
|
||||
# install dependencies
|
||||
yum install -y which sudo procps-ng util-linux autoconf automake \
|
||||
libtool make bzip2 bzip2-devel openssl-devel gmp-devel libstdc++ libcurl-devel \
|
||||
libusbx-devel python3 python3-devel python-devel libedit-devel doxygen \
|
||||
graphviz clang patch llvm-devel llvm-static vim-common jq
|
||||
# build cmake
|
||||
export PATH=$EOSIO_INSTALL_LOCATION/bin:$PATH
|
||||
cd $EOSIO_INSTALL_LOCATION && curl -LO https://cmake.org/files/v3.13/cmake-3.13.2.tar.gz && \
|
||||
tar -xzf cmake-3.13.2.tar.gz && \
|
||||
cd cmake-3.13.2 && \
|
||||
./bootstrap --prefix=$EOSIO_INSTALL_LOCATION && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
rm -rf $EOSIO_INSTALL_LOCATION/cmake-3.13.2.tar.gz $EOSIO_INSTALL_LOCATION/cmake-3.13.2
|
||||
# build boost
|
||||
cd $EOSIO_INSTALL_LOCATION && curl -LO https://boostorg.jfrog.io/artifactory/main/release/1.71.0/source/boost_1_71_0.tar.bz2 && \
|
||||
tar -xjf boost_1_71_0.tar.bz2 && \
|
||||
cd boost_1_71_0 && \
|
||||
./bootstrap.sh --prefix=$EOSIO_INSTALL_LOCATION && \
|
||||
./b2 --with-iostreams --with-date_time --with-filesystem --with-system --with-program_options --with-chrono --with-test -q -j$(nproc) install && \
|
||||
rm -rf $EOSIO_INSTALL_LOCATION/boost_1_71_0.tar.bz2 $EOSIO_INSTALL_LOCATION/boost_1_71_0
|
||||
```
|
||||
|
||||
## Build EOSIO
|
||||
These commands build the EOSIO software on the specified OS. Make sure to [Install EOSIO Dependencies](#install-eosio-dependencies) first.
|
||||
|
||||
[[caution | `EOSIO_BUILD_LOCATION` environment variable]]
|
||||
| Do NOT change this variable. It is set for convenience only. It should always be set to the `build` folder within the cloned repository.
|
||||
|
||||
```sh
|
||||
export EOSIO_BUILD_LOCATION=$EOSIO_LOCATION/build
|
||||
mkdir -p $EOSIO_BUILD_LOCATION
|
||||
cd $EOSIO_BUILD_LOCATION && $EOSIO_INSTALL_LOCATION/bin/cmake -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER='clang++' -DCMAKE_C_COMPILER='clang' -DCMAKE_INSTALL_PREFIX=$EOSIO_INSTALL_LOCATION $EOSIO_LOCATION
|
||||
cd $EOSIO_BUILD_LOCATION && make -j$(nproc)
|
||||
```
|
||||
|
||||
## Install EOSIO
|
||||
This command installs the EOSIO software on the specified OS. Make sure to [Build EOSIO](#build-eosio) first.
|
||||
```sh
|
||||
cd $EOSIO_BUILD_LOCATION && make install
|
||||
```
|
||||
|
||||
## Test EOSIO
|
||||
These commands validate the EOSIO software installation on the specified OS. This task is optional but recommended. Make sure to [Install EOSIO](#install-eosio) first.
|
||||
```sh
|
||||
cd $EOSIO_BUILD_LOCATION && make test
|
||||
```
|
||||
|
||||
## Uninstall EOSIO
|
||||
These commands uninstall the EOSIO software from the specified OS.
|
||||
```sh
|
||||
xargs rm < $EOSIO_BUILD_LOCATION/install_manifest.txt
|
||||
rm -rf $EOSIO_BUILD_LOCATION
|
||||
```
|
||||
@@ -1,100 +0,0 @@
|
||||
---
|
||||
content_title: Centos 7.7
|
||||
---
|
||||
|
||||
This section contains shell commands to manually download, build, install, test, and uninstall EOSIO and dependencies on Centos 7.7.
|
||||
|
||||
[[info | Building EOSIO is for Advanced Developers]]
|
||||
| If you are new to EOSIO, it is recommended that you install the [EOSIO Prebuilt Binaries](../../../00_install-prebuilt-binaries.md) instead of building from source.
|
||||
|
||||
Select a task below, then copy/paste the shell commands to a Unix terminal to execute:
|
||||
|
||||
* [Download EOSIO Repository](#download-eosio-repository)
|
||||
* [Install EOSIO Dependencies](#install-eosio-dependencies)
|
||||
* [Build EOSIO](#build-eosio)
|
||||
* [Install EOSIO](#install-eosio)
|
||||
* [Test EOSIO](#test-eosio)
|
||||
* [Uninstall EOSIO](#uninstall-eosio)
|
||||
|
||||
[[info | Building EOSIO on another OS?]]
|
||||
| Visit the [Build EOSIO from Source](../../index.md) section.
|
||||
|
||||
## Download EOSIO Repository
|
||||
These commands set the EOSIO directories, install git, and clone the EOSIO repository.
|
||||
```sh
|
||||
# set EOSIO directories
|
||||
export EOSIO_LOCATION=~/eosio/eos
|
||||
export EOSIO_INSTALL_LOCATION=$EOSIO_LOCATION/../install
|
||||
mkdir -p $EOSIO_INSTALL_LOCATION
|
||||
# install git
|
||||
yum update -y && yum install -y git
|
||||
# clone EOSIO repository
|
||||
git clone https://github.com/EOSIO/eos.git $EOSIO_LOCATION
|
||||
cd $EOSIO_LOCATION && git submodule update --init --recursive
|
||||
```
|
||||
|
||||
## Install EOSIO Dependencies
|
||||
These commands install the EOSIO software dependencies. Make sure to [Download the EOSIO Repository](#download-eosio-repository) first and set the EOSIO directories.
|
||||
```sh
|
||||
# install dependencies
|
||||
yum update -y && \
|
||||
yum install -y epel-release && \
|
||||
yum --enablerepo=extras install -y centos-release-scl && \
|
||||
yum --enablerepo=extras install -y devtoolset-8 && \
|
||||
yum --enablerepo=extras install -y which git autoconf automake libtool make bzip2 doxygen \
|
||||
graphviz bzip2-devel openssl-devel gmp-devel ocaml \
|
||||
python python-devel rh-python36 file libusbx-devel \
|
||||
libcurl-devel patch vim-common jq llvm-toolset-7.0-llvm-devel llvm-toolset-7.0-llvm-static
|
||||
# build cmake
|
||||
export PATH=$EOSIO_INSTALL_LOCATION/bin:$PATH
|
||||
cd $EOSIO_INSTALL_LOCATION && curl -LO https://cmake.org/files/v3.13/cmake-3.13.2.tar.gz && \
|
||||
source /opt/rh/devtoolset-8/enable && \
|
||||
tar -xzf cmake-3.13.2.tar.gz && \
|
||||
cd cmake-3.13.2 && \
|
||||
./bootstrap --prefix=$EOSIO_INSTALL_LOCATION && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
rm -rf $EOSIO_INSTALL_LOCATION/cmake-3.13.2.tar.gz $EOSIO_INSTALL_LOCATION/cmake-3.13.2
|
||||
# apply clang patch
|
||||
cp -f $EOSIO_LOCATION/scripts/clang-devtoolset8-support.patch /tmp/clang-devtoolset8-support.patch
|
||||
# build boost
|
||||
cd $EOSIO_INSTALL_LOCATION && curl -LO https://boostorg.jfrog.io/artifactory/main/release/1.71.0/source/boost_1_71_0.tar.bz2 && \
|
||||
source /opt/rh/devtoolset-8/enable && \
|
||||
tar -xjf boost_1_71_0.tar.bz2 && \
|
||||
cd boost_1_71_0 && \
|
||||
./bootstrap.sh --prefix=$EOSIO_INSTALL_LOCATION && \
|
||||
./b2 --with-iostreams --with-date_time --with-filesystem --with-system --with-program_options --with-chrono --with-test -q -j$(nproc) install && \
|
||||
rm -rf $EOSIO_INSTALL_LOCATION/boost_1_71_0.tar.bz2 $EOSIO_INSTALL_LOCATION/boost_1_71_0
|
||||
```
|
||||
|
||||
## Build EOSIO
|
||||
These commands build the EOSIO software on the specified OS. Make sure to [Install EOSIO Dependencies](#install-eosio-dependencies) first.
|
||||
|
||||
[[caution | `EOSIO_BUILD_LOCATION` environment variable]]
|
||||
| Do NOT change this variable. It is set for convenience only. It should always be set to the `build` folder within the cloned repository.
|
||||
|
||||
```sh
|
||||
export EOSIO_BUILD_LOCATION=$EOSIO_LOCATION/build
|
||||
mkdir -p $EOSIO_BUILD_LOCATION
|
||||
cd $EOSIO_BUILD_LOCATION && source /opt/rh/devtoolset-8/enable && cmake -DCMAKE_BUILD_TYPE='Release' -DLLVM_DIR='/opt/rh/llvm-toolset-7.0/root/usr/lib64/cmake/llvm' -DCMAKE_INSTALL_PREFIX=$EOSIO_INSTALL_LOCATION $EOSIO_LOCATION
|
||||
cd $EOSIO_BUILD_LOCATION && make -j$(nproc)
|
||||
```
|
||||
|
||||
## Install EOSIO
|
||||
This command installs the EOSIO software on the specified OS. Make sure to [Build EOSIO](#build-eosio) first.
|
||||
```sh
|
||||
cd $EOSIO_BUILD_LOCATION && make install
|
||||
```
|
||||
|
||||
## Test EOSIO
|
||||
These commands validate the EOSIO software installation on the specified OS. This task is optional but recommended. Make sure to [Install EOSIO](#install-eosio) first.
|
||||
```sh
|
||||
cd $EOSIO_BUILD_LOCATION && source /opt/rh/rh-python36/enable && make test
|
||||
```
|
||||
|
||||
## Uninstall EOSIO
|
||||
These commands uninstall the EOSIO software from the specified OS.
|
||||
```sh
|
||||
xargs rm < $EOSIO_BUILD_LOCATION/install_manifest.txt
|
||||
rm -rf $EOSIO_BUILD_LOCATION
|
||||
```
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
content_title: Platforms
|
||||
---
|
||||
|
||||
* [Amazon Linux 2](amazon_linux-2.md)
|
||||
* [CentOS 7.7](centos-7.7.md)
|
||||
* [MacOS 10.14](macos-10.14.md)
|
||||
* [Ubuntu 18.04](ubuntu-18.04.md)
|
||||
@@ -1,74 +0,0 @@
|
||||
---
|
||||
content_title: MacOS 10.14
|
||||
---
|
||||
|
||||
This section contains shell commands to manually download, build, install, test, and uninstall EOSIO and dependencies on MacOS 10.14.
|
||||
|
||||
[[info | Building EOSIO is for Advanced Developers]]
|
||||
| If you are new to EOSIO, it is recommended that you install the [EOSIO Prebuilt Binaries](../../../00_install-prebuilt-binaries.md) instead of building from source.
|
||||
|
||||
Select a task below, then copy/paste the shell commands to a Unix terminal to execute:
|
||||
|
||||
* [Download EOSIO Repository](#download-eosio-repository)
|
||||
* [Install EOSIO Dependencies](#install-eosio-dependencies)
|
||||
* [Build EOSIO](#build-eosio)
|
||||
* [Install EOSIO](#install-eosio)
|
||||
* [Test EOSIO](#test-eosio)
|
||||
* [Uninstall EOSIO](#uninstall-eosio)
|
||||
|
||||
[[info | Building EOSIO on another OS?]]
|
||||
| Visit the [Build EOSIO from Source](../../index.md) section.
|
||||
|
||||
## Download EOSIO Repository
|
||||
These commands set the EOSIO directories, install git, and clone the EOSIO repository.
|
||||
```sh
|
||||
# set EOSIO directories
|
||||
export EOSIO_LOCATION=~/eosio/eos
|
||||
export EOSIO_INSTALL_LOCATION=$EOSIO_LOCATION/../install
|
||||
mkdir -p $EOSIO_INSTALL_LOCATION
|
||||
# install git
|
||||
brew update && brew install git
|
||||
# clone EOSIO repository
|
||||
git clone https://github.com/EOSIO/eos.git $EOSIO_LOCATION
|
||||
cd $EOSIO_LOCATION && git submodule update --init --recursive
|
||||
```
|
||||
|
||||
## Install EOSIO Dependencies
|
||||
These commands install the EOSIO software dependencies. Make sure to [Download the EOSIO Repository](#download-eosio-repository) first and set the EOSIO directories.
|
||||
```sh
|
||||
# install dependencies
|
||||
brew install cmake python libtool libusb graphviz automake wget gmp pkgconfig doxygen openssl@1.1 jq boost || :
|
||||
export PATH=$EOSIO_INSTALL_LOCATION/bin:$PATH
|
||||
```
|
||||
|
||||
## Build EOSIO
|
||||
These commands build the EOSIO software on the specified OS. Make sure to [Install EOSIO Dependencies](#install-eosio-dependencies) first.
|
||||
|
||||
[[caution | `EOSIO_BUILD_LOCATION` environment variable]]
|
||||
| Do NOT change this variable. It is set for convenience only. It should always be set to the `build` folder within the cloned repository.
|
||||
|
||||
```sh
|
||||
export EOSIO_BUILD_LOCATION=$EOSIO_LOCATION/build
|
||||
mkdir -p $EOSIO_BUILD_LOCATION
|
||||
cd $EOSIO_BUILD_LOCATION && cmake -DCMAKE_BUILD_TYPE='Release' -DCMAKE_INSTALL_PREFIX=$EOSIO_INSTALL_LOCATION $EOSIO_LOCATION
|
||||
cd $EOSIO_BUILD_LOCATION && make -j$(getconf _NPROCESSORS_ONLN)
|
||||
```
|
||||
|
||||
## Install EOSIO
|
||||
This command installs the EOSIO software on the specified OS. Make sure to [Build EOSIO](#build-eosio) first.
|
||||
```sh
|
||||
cd $EOSIO_BUILD_LOCATION && make install
|
||||
```
|
||||
|
||||
## Test EOSIO
|
||||
These commands validate the EOSIO software installation on the specified OS. This task is optional but recommended. Make sure to [Install EOSIO](#install-eosio) first.
|
||||
```sh
|
||||
cd $EOSIO_BUILD_LOCATION && make test
|
||||
```
|
||||
|
||||
## Uninstall EOSIO
|
||||
These commands uninstall the EOSIO software from the specified OS.
|
||||
```sh
|
||||
xargs rm < $EOSIO_BUILD_LOCATION/install_manifest.txt
|
||||
rm -rf $EOSIO_BUILD_LOCATION
|
||||
```
|
||||
@@ -1,92 +0,0 @@
|
||||
---
|
||||
content_title: Ubuntu 18.04
|
||||
---
|
||||
|
||||
This section contains shell commands to manually download, build, install, test, and uninstall EOSIO and dependencies on Ubuntu 18.04.
|
||||
|
||||
[[info | Building EOSIO is for Advanced Developers]]
|
||||
| If you are new to EOSIO, it is recommended that you install the [EOSIO Prebuilt Binaries](../../../00_install-prebuilt-binaries.md) instead of building from source.
|
||||
|
||||
Select a task below, then copy/paste the shell commands to a Unix terminal to execute:
|
||||
|
||||
* [Download EOSIO Repository](#download-eosio-repository)
|
||||
* [Install EOSIO Dependencies](#install-eosio-dependencies)
|
||||
* [Build EOSIO](#build-eosio)
|
||||
* [Install EOSIO](#install-eosio)
|
||||
* [Test EOSIO](#test-eosio)
|
||||
* [Uninstall EOSIO](#uninstall-eosio)
|
||||
|
||||
[[info | Building EOSIO on another OS?]]
|
||||
| Visit the [Build EOSIO from Source](../../index.md) section.
|
||||
|
||||
## Download EOSIO Repository
|
||||
These commands set the EOSIO directories, install git, and clone the EOSIO repository.
|
||||
```sh
|
||||
# set EOSIO directories
|
||||
export EOSIO_LOCATION=~/eosio/eos
|
||||
export EOSIO_INSTALL_LOCATION=$EOSIO_LOCATION/../install
|
||||
mkdir -p $EOSIO_INSTALL_LOCATION
|
||||
# install git
|
||||
apt-get update && apt-get upgrade -y && DEBIAN_FRONTEND=noninteractive apt-get install -y git
|
||||
# clone EOSIO repository
|
||||
git clone https://github.com/EOSIO/eos.git $EOSIO_LOCATION
|
||||
cd $EOSIO_LOCATION && git submodule update --init --recursive
|
||||
```
|
||||
|
||||
## Install EOSIO Dependencies
|
||||
These commands install the EOSIO software dependencies. Make sure to [Download the EOSIO Repository](#download-eosio-repository) first and set the EOSIO directories.
|
||||
```sh
|
||||
# install dependencies
|
||||
apt-get install -y make bzip2 automake libbz2-dev libssl-dev doxygen graphviz libgmp3-dev \
|
||||
autotools-dev python2.7 python2.7-dev python3 python3-dev \
|
||||
autoconf libtool curl zlib1g-dev sudo ruby libusb-1.0-0-dev \
|
||||
libcurl4-gnutls-dev pkg-config patch llvm-7-dev clang-7 vim-common jq
|
||||
# build cmake
|
||||
export PATH=$EOSIO_INSTALL_LOCATION/bin:$PATH
|
||||
cd $EOSIO_INSTALL_LOCATION && curl -LO https://cmake.org/files/v3.13/cmake-3.13.2.tar.gz && \
|
||||
tar -xzf cmake-3.13.2.tar.gz && \
|
||||
cd cmake-3.13.2 && \
|
||||
./bootstrap --prefix=$EOSIO_INSTALL_LOCATION && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
rm -rf $EOSIO_INSTALL_LOCATION/cmake-3.13.2.tar.gz $EOSIO_INSTALL_LOCATION/cmake-3.13.2
|
||||
# build boost
|
||||
cd $EOSIO_INSTALL_LOCATION && curl -LO https://boostorg.jfrog.io/artifactory/main/release/1.71.0/source/boost_1_71_0.tar.bz2 && \
|
||||
tar -xjf boost_1_71_0.tar.bz2 && \
|
||||
cd boost_1_71_0 && \
|
||||
./bootstrap.sh --prefix=$EOSIO_INSTALL_LOCATION && \
|
||||
./b2 --with-iostreams --with-date_time --with-filesystem --with-system --with-program_options --with-chrono --with-test -q -j$(nproc) install && \
|
||||
rm -rf $EOSIO_INSTALL_LOCATION/boost_1_71_0.tar.bz2 $EOSIO_INSTALL_LOCATION/boost_1_71_0
|
||||
```
|
||||
|
||||
## Build EOSIO
|
||||
These commands build the EOSIO software on the specified OS. Make sure to [Install EOSIO Dependencies](#install-eosio-dependencies) first.
|
||||
|
||||
[[caution | `EOSIO_BUILD_LOCATION` environment variable]]
|
||||
| Do NOT change this variable. It is set for convenience only. It should always be set to the `build` folder within the cloned repository.
|
||||
|
||||
```sh
|
||||
export EOSIO_BUILD_LOCATION=$EOSIO_LOCATION/build
|
||||
mkdir -p $EOSIO_BUILD_LOCATION
|
||||
cd $EOSIO_BUILD_LOCATION && cmake -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER='clang++-7' -DCMAKE_C_COMPILER='clang-7' -DLLVM_DIR='/usr/lib/llvm-7/lib/cmake/llvm' -DCMAKE_INSTALL_PREFIX=$EOSIO_INSTALL_LOCATION $EOSIO_LOCATION
|
||||
cd $EOSIO_BUILD_LOCATION && make -j$(nproc)
|
||||
```
|
||||
|
||||
## Install EOSIO
|
||||
This command installs the EOSIO software on the specified OS. Make sure to [Build EOSIO](#build-eosio) first.
|
||||
```sh
|
||||
cd $EOSIO_BUILD_LOCATION && make install
|
||||
```
|
||||
|
||||
## Test EOSIO
|
||||
These commands validate the EOSIO software installation on the specified OS. Make sure to [Install EOSIO](#install-eosio) first. (**Note**: This task is optional but recommended.)
|
||||
```sh
|
||||
cd $EOSIO_BUILD_LOCATION && make test
|
||||
```
|
||||
|
||||
## Uninstall EOSIO
|
||||
These commands uninstall the EOSIO software from the specified OS.
|
||||
```sh
|
||||
xargs rm < $EOSIO_BUILD_LOCATION/install_manifest.txt
|
||||
rm -rf $EOSIO_BUILD_LOCATION
|
||||
```
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO Manual Build
|
||||
---
|
||||
|
||||
[[info | Manual Builds are for Advanced Developers]]
|
||||
| These manual instructions are intended for advanced developers. The [Shell Scripts](../01_shell-scripts/index.md) should be the preferred method to build EOSIO from source. If the script fails or your platform is not supported, continue with the instructions below.
|
||||
|
||||
## EOSIO Dependencies
|
||||
|
||||
When performing a manual build, it is necessary to install specific software packages that the EOSIO software depends on. To learn more about these dependencies, visit the [EOSIO Software Dependencies](00_eosio-dependencies.md) section.
|
||||
|
||||
## Platforms
|
||||
|
||||
Shell commands are available to manually download, build, install, test, and uninstall the EOSIO software and dependencies for these [platforms](03_platforms/index.md).
|
||||
|
||||
## Out-of-source Builds
|
||||
|
||||
While building dependencies and EOSIO binaries, out-of-source builds are also supported. Refer to the `cmake` help for more information.
|
||||
|
||||
## Other Compilers
|
||||
|
||||
To override `clang`'s default compiler toolchain, add these flags to the `cmake` command within the above instructions:
|
||||
|
||||
`-DCMAKE_CXX_COMPILER=/path/to/c++ -DCMAKE_C_COMPILER=/path/to/cc`
|
||||
|
||||
## Debug Builds
|
||||
|
||||
For a debug build, add `-DCMAKE_BUILD_TYPE=Debug`. Other common build types include `Release` and `RelWithDebInfo`.
|
||||
@@ -2,13 +2,123 @@
|
||||
content_title: Build EOSIO from Source
|
||||
---
|
||||
|
||||
[[info | Building EOSIO is for Advanced Developers]]
|
||||
| If you are new to EOSIO, it is recommended that you install the [EOSIO Prebuilt Binaries](../00_install-prebuilt-binaries.md) instead of building from source.
|
||||
The shell scripts previously recommended for building the software have been removed in favor of a build process entirely driven by CMake. Those wishing to build from source are now responsible for installing the necessary dependencies. The list of dependencies and the recommended build procedure are in the README.md file. Instructions are also included for efficiently running the tests.
|
||||
|
||||
EOSIO can be built on several platforms using different build methods. Advanced users may opt to build EOSIO using our shell scripts. Node operators or block producers who wish to deploy a public node, may prefer our manual build instructions.
|
||||
### Using DUNE
|
||||
|
||||
* [Shell Scripts](01_shell-scripts/index.md) - Suitable for the majority of developers, these scripts build on Mac OS and many flavors of Linux.
|
||||
* [Manual Build](02_manual-build/index.md) - Suitable for those platforms that may be hostile to the shell scripts or for operators who need more control over their builds.
|
||||
As an alternative to building from source try [Docker Utilities for Node Execution](https://github.com/eosnetworkfoundation/DUNE) for the easiest way to get started, and for multi-platform support.
|
||||
|
||||
[[info | EOSIO Installation Recommended]]
|
||||
| After building EOSIO successfully, it is highly recommended to install the EOSIO binaries from their default build directory. This copies the EOSIO binaries to a central location, such as `/usr/local/bin`, or `~/eosio/x.y/bin`, where `x.y` is the EOSIO release version.
|
||||
### Building From Source
|
||||
|
||||
Recent Ubuntu LTS releases are the only Linux distributions that we fully support. Other Linux distros and other POSIX operating systems (such as macOS) are tended to on a best-effort basis and may not be full featured. Notable requirements to build are:
|
||||
* C++17 compiler and standard library
|
||||
* boost 1.67+
|
||||
* CMake 3.8+
|
||||
* (for Linux only) LLVM 7 - 11 (newer versions do not work)
|
||||
|
||||
A few other common libraries are tools also required such as openssl 1.1+, libcurl, curl, libusb, GMP, Python 3, and zlib.
|
||||
|
||||
**A Warning On Parallel Compilation Jobs (`-j` flag)**: When building C/C++ software often the build is performed in parallel via a command such as `make -j $(nproc)` which uses the number of CPU cores as the number of compilation jobs to perform simultaneously. However, be aware that some compilation units (.cpp files) in mandel are extremely complex and will consume nearly 4GB of memory to compile. You may need to reduce the level of parallelization depending on the amount of memory on your build host. e.g. instead of `make -j $(nproc)` run `make -j2`. Failures due to memory exhaustion will typically but not always manifest as compiler crashes.
|
||||
|
||||
Generally we recommend performing what we refer to as a "pinned build" which ensures the compiler and boost version remain the same between builds of different mandel versions (mandel requires these versions remain the same otherwise its state needs to be repopulated from a portable snapshot).
|
||||
|
||||
#### Building Pinned Build Binary Packages
|
||||
In the directory `<mandel src>/scripts` you will find the two scripts `install_deps.sh` and `pinned_build.sh`. If you haven't installed build dependencies then run `install_deps.sh`. Then run `pinned_build.sh <dependencies directory> <mandel build directory> <number of jobs>`.
|
||||
|
||||
The dependencies directory is where the script will pull the C++ dependencies that need to be built with the pinned compiler for building the pinned binaries for binary packaging.
|
||||
|
||||
The binary package will be produced in the mandel build directory that was supplied.
|
||||
|
||||
#### Manual (non "pinned") Build Instructions
|
||||
|
||||
<details>
|
||||
<summary>Ubuntu 20.04 & 22.04 Build Instructions</summary>
|
||||
|
||||
Install required dependencies:
|
||||
```
|
||||
apt-get update && apt-get install \
|
||||
build-essential \
|
||||
cmake \
|
||||
curl \
|
||||
git \
|
||||
libboost-all-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libgmp-dev \
|
||||
libssl-dev \
|
||||
libusb-1.0-0-dev \
|
||||
llvm-11-dev \
|
||||
pkg-config
|
||||
```
|
||||
and perform the build:
|
||||
```
|
||||
git submodule update --init --recursive
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||
make -j $(nproc) package
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Ubuntu 18.04 Build Instructions</summary>
|
||||
|
||||
Install required dependencies. You will need to build Boost from source on this distribution.
|
||||
```
|
||||
apt-get update && apt-get install \
|
||||
build-essential \
|
||||
cmake \
|
||||
curl \
|
||||
g++-8 \
|
||||
git \
|
||||
libcurl4-openssl-dev \
|
||||
libgmp-dev \
|
||||
libssl-dev \
|
||||
libusb-1.0-0-dev \
|
||||
llvm-7-dev \
|
||||
pkg-config \
|
||||
python3 \
|
||||
zlib1g-dev
|
||||
|
||||
curl -L https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.bz2 | tar jx && \
|
||||
cd boost_1_79_0 && \
|
||||
./bootstrap.sh --prefix=$HOME/boost1.79 && \
|
||||
./b2 --with-iostreams --with-date_time --with-filesystem --with-system \
|
||||
--with-program_options --with-chrono --with-test -j$(nproc) install && \
|
||||
cd ..
|
||||
```
|
||||
and perform the build:
|
||||
```
|
||||
git submodule update --init --recursive
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 \
|
||||
-DCMAKE_PREFIX_PATH="$HOME/boost1.79;/usr/lib/llvm-7/" -DCMAKE_BUILD_TYPE=Release .. \
|
||||
make -j $(nproc) package
|
||||
```
|
||||
After building you may remove the `$HOME/boost1.79` directory, or you may keep it around until next time building the software.
|
||||
</details>
|
||||
|
||||
### Running Tests
|
||||
|
||||
When building from source it's recommended to run at least what we refer to as the "parallelizable tests". Not included by default in the "parallelizable tests" are the WASM spec tests which can add additional coverage and can also be run in parallel.
|
||||
|
||||
```
|
||||
cd build
|
||||
|
||||
# "parallelizable tests": the minimum test set that should be run
|
||||
ctest -j $(nproc) -LE _tests
|
||||
|
||||
# Also consider running the WASM spec tests for more coverage
|
||||
ctest -j $(nproc) -L wasm_spec_tests
|
||||
```
|
||||
|
||||
Some other tests are available and recommended but be aware they can be sensitive to other software running on the same host and they may **SIGKILL** other nodeos instances running on the host.
|
||||
```
|
||||
cd build
|
||||
|
||||
# These tests can't run in parallel but are recommended.
|
||||
ctest -L "nonparallelizable_tests"
|
||||
|
||||
# These tests can't run in parallel. They also take a long time to run.
|
||||
ctest -L "long_running_tests"
|
||||
```
|
||||
|
||||
+13
-11
@@ -2,23 +2,25 @@
|
||||
content_title: EOSIO Software Installation
|
||||
---
|
||||
|
||||
There are various ways to install and use the EOSIO software:
|
||||
The best way to install and use the EOSIO software is to build it from source:
|
||||
|
||||
* [Install EOSIO Prebuilt Binaries](00_install-prebuilt-binaries.md)
|
||||
* [Build EOSIO from Source](01_build-from-source/index.md)
|
||||
|
||||
[[info]]
|
||||
| If you are new to EOSIO, it is recommended that you install the [EOSIO Prebuilt Binaries](00_install-prebuilt-binaries.md), then proceed to the [Getting Started](https://developers.eos.io/eosio-home/docs/) section of the [EOSIO Developer Portal](https://developers.eos.io/). If you are an advanced developer, a block producer, or no binaries are available for your platform, you may need to [Build EOSIO from source](01_build-from-source/index.md) instead.
|
||||
|
||||
## Supported Operating Systems
|
||||
|
||||
EOSIO currently supports the following operating systems:
|
||||
|
||||
1. Amazon Linux 2
|
||||
2. CentOS 7
|
||||
3. Ubuntu 16.04
|
||||
4. Ubuntu 18.04
|
||||
5. MacOS 10.14 (Mojave)
|
||||
1. Ubuntu 18.04
|
||||
2. Ubuntu 20.04
|
||||
3. Ubuntu 22.04
|
||||
|
||||
[[info | Note]]
|
||||
| It may be possible to install EOSIO on other Unix-based operating systems. This is not officially supported, though.
|
||||
| It may be possible to build and install EOSIO on other Unix-based operating systems. We gathered helpful information on the following page but please keep in mind that it is experimental and not officially supported.
|
||||
|
||||
* [Build EOSIO on Other Unix-based Systems](01_build-from-source/00_build-unsupported-os.md)
|
||||
|
||||
## Docker Utilities for Node Execution (D.U.N.E.)
|
||||
|
||||
If you are using different operating system or prefer not to build EOSIO from source you can try our Docker - based set of utilities called DUNE that can get you started with exploring EOSIO and doing contract development pretty much instantly
|
||||
|
||||
* [Docker Utilities for Node Execution (D.U.N.E.)](https://github.com/eosnetworkfoundation/DUNE)
|
||||
|
||||
@@ -10,9 +10,8 @@ For example, the CLI option `--plugin eosio::chain_api_plugin` can also be set b
|
||||
|
||||
## `config.ini` location
|
||||
|
||||
The default `config.ini` can be found in the following folders:
|
||||
- Mac OS: `~/Library/Application Support/eosio/nodeos/config`
|
||||
- Linux: `~/.local/share/eosio/nodeos/config`
|
||||
The default `config.ini` can be found in the following folder on Linux:
|
||||
`~/.local/share/eosio/nodeos/config`
|
||||
|
||||
A custom `config.ini` file can be set by passing the `nodeos` option `--config path/to/config.ini`.
|
||||
|
||||
|
||||
@@ -12,7 +12,11 @@ This section describes how to set up a producing node within the EOSIO network.
|
||||
## Before you begin
|
||||
|
||||
* [Install the EOSIO software](../../../00_install/index.md) before starting this section.
|
||||
* It is assumed that `nodeos`, `cleos`, and `keosd` are accessible through the path. If you built EOSIO using shell scripts, make sure to run the [Install Script](../../../00_install/01_build-from-source/01_shell-scripts/03_install-eosio-binaries.md).
|
||||
* It is assumed that `nodeos`, `cleos`, and `keosd` are accessible through the path.
|
||||
|
||||
[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN )
|
||||
[//]: # ( If you built EOSIO using shell scripts, make sure to run the Install Script ../../../00_install/01_build-from-source/01_shell-scripts/03_install-eosio-binaries.md )
|
||||
|
||||
* Know how to pass [Nodeos options](../../02_usage/00_nodeos-options.md) to enable or disable functionality.
|
||||
|
||||
## Steps
|
||||
@@ -46,11 +50,11 @@ producer-name = youraccount
|
||||
|
||||
### 3. Set the Producer's signature-provider
|
||||
|
||||
You will need to set the private key for your producer. The public key should have an authority for the producer account defined above.
|
||||
You will need to set the private key for your producer. The public key should have an authority for the producer account defined above.
|
||||
|
||||
`signature-provider` is defined with a 3-field tuple:
|
||||
* `public-key` - A valid EOSIO public key in form of a string.
|
||||
* `provider-spec` - It's a string formatted like <provider-type>:<data>
|
||||
* `provider-spec` - It's a string formatted like `<provider-type>:<data>`
|
||||
* `provider-type` - KEY or KEOSD
|
||||
|
||||
#### Using a Key:
|
||||
@@ -65,7 +69,7 @@ signature-provider = PUBLIC_SIGNING_KEY=KEY:PRIVATE_SIGNING_KEY
|
||||
```
|
||||
|
||||
#### Using Keosd:
|
||||
You can also use `keosd` instead of hard-defining keys.
|
||||
You can also use `keosd` instead of hard-defining keys.
|
||||
|
||||
```console
|
||||
# config.ini:
|
||||
@@ -87,7 +91,7 @@ p2p-peer-address = 123.255.78.9:9876
|
||||
|
||||
### 5. Load the Required Plugins
|
||||
|
||||
In your [config.ini](../index.md), confirm the following plugins are loading or append them if necessary.
|
||||
In your [config.ini](../index.md), confirm the following plugins are loading or append them if necessary.
|
||||
|
||||
```console
|
||||
# config.ini:
|
||||
|
||||
@@ -9,12 +9,16 @@ This section describes how to set up a non-producing node within the EOSIO netwo
|
||||
## Before you begin
|
||||
|
||||
* [Install the EOSIO software](../../../00_install/index.md) before starting this section.
|
||||
* It is assumed that `nodeos`, `cleos`, and `keosd` are accessible through the path. If you built EOSIO using shell scripts, make sure to run the [Install Script](../../../00_install/01_build-from-source/01_shell-scripts/03_install-eosio-binaries.md).
|
||||
* It is assumed that `nodeos`, `cleos`, and `keosd` are accessible through the path.
|
||||
|
||||
[//]: # ( THIS IS A COMMENT NEXT LINK CONTAINS A BROKEN LINK )
|
||||
[//]: # ( If you built EOSIO using shell scripts, make sure to run the Install Script ../../../00_install/01_build-from-source/01_shell-scripts/03_install-eosio-binaries.md )
|
||||
|
||||
* Know how to pass [Nodeos options](../../02_usage/00_nodeos-options.md) to enable or disable functionality.
|
||||
|
||||
## Steps
|
||||
|
||||
To setup a non-producing node is simple.
|
||||
To setup a non-producing node is simple.
|
||||
|
||||
1. [Set Peers](#1-set-peers)
|
||||
2. [Enable one or more available plugins](#2-enable-one-or-more-available-plugins)
|
||||
|
||||
@@ -13,7 +13,11 @@ This section describes how to set up a single-node blockchain configuration runn
|
||||
## Before you begin
|
||||
|
||||
* [Install the EOSIO software](../../../00_install/index.md) before starting this section.
|
||||
* It is assumed that `nodeos`, `cleos`, and `keosd` are accessible through the path. If you built EOSIO using shell scripts, make sure to run the [Install Script](../../../00_install/01_build-from-source/01_shell-scripts/03_install-eosio-binaries.md).
|
||||
* It is assumed that `nodeos`, `cleos`, and `keosd` are accessible through the path.
|
||||
|
||||
[//]: # (THIS IS A COMMENT, NEXT LINK HAS BROKEN LINK)
|
||||
[//]: # (If you built EOSIO using shell scripts, make sure to run the Install Script ../../../00_install/01_build-from-source/01_shell-scripts/03_install-eosio-binaries.md .)
|
||||
|
||||
* Know how to pass [Nodeos options](../../02_usage/00_nodeos-options.md) to enable or disable functionality.
|
||||
|
||||
## Steps
|
||||
@@ -87,7 +91,7 @@ The more advanced user will likely have need to modify the configuration. `node
|
||||
* Linux: `~/.local/share/eosio/nodeos/config`
|
||||
|
||||
The build seeds this folder with a default `genesis.json` file. A configuration folder can be specified using the `--config-dir` command line argument to `nodeos`. If you use this option, you will need to manually copy a `genesis.json` file to your config folder.
|
||||
|
||||
|
||||
`nodeos` will need a properly configured `config.ini` file in order to do meaningful work. On startup, `nodeos` looks in the config folder for `config.ini`. If one is not found, a default `config.ini` file is created. If you do not already have a `config.ini` file ready to use, run `nodeos` and then close it immediately with <kbd>Ctrl-C</kbd>. A default configuration (`config.ini`) will have been created in the config folder. Edit the `config.ini` file, adding/updating the following settings to the defaults already in place:
|
||||
|
||||
```console
|
||||
@@ -115,7 +119,7 @@ nodeos
|
||||
|
||||
* Mac OS: `~/Library/Application\ Support/eosio/nodeos/data`
|
||||
* Linux: `~/.local/share/eosio/nodeos/data`
|
||||
|
||||
|
||||
A data folder can be specified using the `--data-dir` command line argument to `nodeos`.
|
||||
|
||||
[[info | What's next?]]
|
||||
|
||||
@@ -11,7 +11,7 @@ This section describes how to set up a multi-node blockchain configuration runni
|
||||
## Before you begin
|
||||
|
||||
* [Install the EOSIO software](../../../00_install/index.md) before starting this section.
|
||||
* It is assumed that `nodeos`, `cleos`, and `keosd` are accessible through the path. If you built EOSIO using shell scripts, make sure to run the [Install Script](../../../00_install/01_build-from-source/01_shell-scripts/03_install-eosio-binaries.md).
|
||||
* It is assumed that `nodeos`, `cleos`, and `keosd` are accessible through the path.
|
||||
* Know how to pass [Nodeos options](../../02_usage/00_nodeos-options.md) to enable or disable functionality.
|
||||
|
||||
## Steps
|
||||
|
||||
@@ -8,20 +8,18 @@ There are several ways to configure a `nodeos` environment for development and t
|
||||
|
||||
This is the go-to option for smart contract developers, aspiring Block Producers or Non-Producing Node operators. It has the most simple configuration with the least number of requirements.
|
||||
|
||||
* [Configure Nodeos as a Local Single-node Testnet](00_local-single-node-testnet.md)
|
||||
* [Configure Nodeos as a Local Single-node Testnet](00_local-single-node-testnet.md)
|
||||
|
||||
## Local Multi-Node Testnet
|
||||
|
||||
While this option can technically be used for smart contract development, it may be overkill. This is most beneficial for those who are working on aspects of core development, such as benchmarking, optimization and experimentation. It's also a good option for hands-on learning and concept proofing.
|
||||
|
||||
* [Configure Nodeos as a Local Two-Node Testnet](01_local-multi-node-testnet.md)
|
||||
* [Configure Nodeos as a Local 21-Node Testnet](https://github.com/EOSIO/eos/blob/master/tutorials/bios-boot-tutorial/README.md)
|
||||
* [Configure Nodeos as a Local 21-Node Testnet](/tutorials/bios-boot-tutorial.md)
|
||||
|
||||
## Official Testnet
|
||||
## Official Testing Node
|
||||
|
||||
The official testnet is available for testing EOSIO dApps and smart contracts:
|
||||
|
||||
* [testnet.eos.io](https://testnet.eos.io/)
|
||||
Try [Docker Utilities for Node Execution](https://github.com/eosnetworkfoundation/DUNE) for the easiest way to get started, and for multi-platform support.
|
||||
|
||||
## Third-Party Testnets
|
||||
|
||||
|
||||
@@ -12,9 +12,6 @@ It provides four RPC API endpoints:
|
||||
* get_key_accounts
|
||||
* get_controlled_accounts
|
||||
|
||||
[[info | More Info]]
|
||||
| See HISTORY section of [RPC API](https://developers.eos.io/eosio-nodeos/reference).
|
||||
|
||||
The four actions listed above are used by the following `cleos` commands (matching order):
|
||||
|
||||
* get actions
|
||||
|
||||
@@ -8,7 +8,7 @@ The `net_api_plugin` provides four RPC API endpoints:
|
||||
* connections
|
||||
* status
|
||||
|
||||
See [Net API Reference Documentation](https://developers.eos.io/manuals/eos/latest/nodeos/plugins/net_api_plugin/api-reference/index).
|
||||
See [Net API Reference Documentation](https://docs.eosnetwork.com/reference/mandel-plugins/net_api.html).
|
||||
|
||||
[[caution | Caution]]
|
||||
| This plugin exposes endpoints that allow management of p2p connections. Running this plugin on a publicly accessible node is not recommended as it can be exploited.
|
||||
|
||||
@@ -23,77 +23,77 @@ Config Options for eosio::net_plugin:
|
||||
--p2p-listen-endpoint arg (=0.0.0.0:9876)
|
||||
The actual host:port used to listen for
|
||||
incoming p2p connections.
|
||||
--p2p-server-address arg An externally accessible host:port for
|
||||
identifying this node. Defaults to
|
||||
--p2p-server-address arg An externally accessible host:port for
|
||||
identifying this node. Defaults to
|
||||
p2p-listen-endpoint.
|
||||
--p2p-peer-address arg The public endpoint of a peer node to
|
||||
connect to. Use multiple
|
||||
p2p-peer-address options as needed to
|
||||
--p2p-peer-address arg The public endpoint of a peer node to
|
||||
connect to. Use multiple
|
||||
p2p-peer-address options as needed to
|
||||
compose a network.
|
||||
Syntax: host:port[:<trx>|<blk>]
|
||||
The optional 'trx' and 'blk'
|
||||
indicates to node that only
|
||||
transactions 'trx' or blocks 'blk'
|
||||
The optional 'trx' and 'blk'
|
||||
indicates to node that only
|
||||
transactions 'trx' or blocks 'blk'
|
||||
should be sent. Examples:
|
||||
p2p.eos.io:9876
|
||||
p2p.trx.eos.io:9876:trx
|
||||
p2p.blk.eos.io:9876:blk
|
||||
|
||||
p2p.example.org:9876
|
||||
p2p.trx.example.org:9876:trx
|
||||
p2p.blk.example.org:9876:blk
|
||||
|
||||
--p2p-max-nodes-per-host arg (=1) Maximum number of client nodes from any
|
||||
single IP address
|
||||
--p2p-accept-transactions arg (=1) Allow transactions received over p2p
|
||||
network to be evaluated and relayed if
|
||||
--p2p-accept-transactions arg (=1) Allow transactions received over p2p
|
||||
network to be evaluated and relayed if
|
||||
valid.
|
||||
--agent-name arg (="EOS Test Agent") The name supplied to identify this node
|
||||
amongst the peers.
|
||||
--allowed-connection arg (=any) Can be 'any' or 'producers' or
|
||||
'specified' or 'none'. If 'specified',
|
||||
peer-key must be specified at least
|
||||
once. If only 'producers', peer-key is
|
||||
not required. 'producers' and
|
||||
--allowed-connection arg (=any) Can be 'any' or 'producers' or
|
||||
'specified' or 'none'. If 'specified',
|
||||
peer-key must be specified at least
|
||||
once. If only 'producers', peer-key is
|
||||
not required. 'producers' and
|
||||
'specified' may be combined.
|
||||
--peer-key arg Optional public key of peer allowed to
|
||||
--peer-key arg Optional public key of peer allowed to
|
||||
connect. May be used multiple times.
|
||||
--peer-private-key arg Tuple of [PublicKey, WIF private key]
|
||||
--peer-private-key arg Tuple of [PublicKey, WIF private key]
|
||||
(may specify multiple times)
|
||||
--max-clients arg (=25) Maximum number of clients from which
|
||||
connections are accepted, use 0 for no
|
||||
--max-clients arg (=25) Maximum number of clients from which
|
||||
connections are accepted, use 0 for no
|
||||
limit
|
||||
--connection-cleanup-period arg (=30) number of seconds to wait before
|
||||
--connection-cleanup-period arg (=30) number of seconds to wait before
|
||||
cleaning up dead connections
|
||||
--max-cleanup-time-msec arg (=10) max connection cleanup time per cleanup
|
||||
call in milliseconds
|
||||
--p2p-dedup-cache-expire-time-sec arg (=10)
|
||||
Maximum time to track transaction for
|
||||
Maximum time to track transaction for
|
||||
duplicate optimization
|
||||
--net-threads arg (=2) Number of worker threads in net_plugin
|
||||
--net-threads arg (=2) Number of worker threads in net_plugin
|
||||
thread pool
|
||||
--sync-fetch-span arg (=100) number of blocks to retrieve in a chunk
|
||||
from any individual peer during
|
||||
from any individual peer during
|
||||
synchronization
|
||||
--use-socket-read-watermark arg (=0) Enable experimental socket read
|
||||
--use-socket-read-watermark arg (=0) Enable experimental socket read
|
||||
watermark optimization
|
||||
--peer-log-format arg (=["${_name}" ${_ip}:${_port}])
|
||||
The string used to format peers when
|
||||
The string used to format peers when
|
||||
logging messages about them. Variables
|
||||
are escaped with ${<variable name>}.
|
||||
Available Variables:
|
||||
_name self-reported name
|
||||
|
||||
_id self-reported ID (64 hex
|
||||
|
||||
_id self-reported ID (64 hex
|
||||
characters)
|
||||
|
||||
_sid first 8 characters of
|
||||
|
||||
_sid first 8 characters of
|
||||
_peer.id
|
||||
|
||||
|
||||
_ip remote IP address of peer
|
||||
|
||||
|
||||
_port remote port number of peer
|
||||
|
||||
|
||||
_lip local IP address connected to
|
||||
peer
|
||||
|
||||
_lport local port number connected
|
||||
|
||||
_lport local port number connected
|
||||
to peer
|
||||
```
|
||||
|
||||
|
||||
@@ -24,100 +24,100 @@ These can be specified from both the `nodeos` command-line or the `config.ini` f
|
||||
```console
|
||||
Config Options for eosio::producer_plugin:
|
||||
|
||||
-e [ --enable-stale-production ] Enable block production, even if the
|
||||
-e [ --enable-stale-production ] Enable block production, even if the
|
||||
chain is stale.
|
||||
-x [ --pause-on-startup ] Start this node in a state where
|
||||
-x [ --pause-on-startup ] Start this node in a state where
|
||||
production is paused
|
||||
--max-transaction-time arg (=30) Limits the maximum time (in
|
||||
milliseconds) that is allowed a pushed
|
||||
transaction's code to execute before
|
||||
--max-transaction-time arg (=30) Limits the maximum time (in
|
||||
milliseconds) that is allowed a pushed
|
||||
transaction's code to execute before
|
||||
being considered invalid
|
||||
--max-irreversible-block-age arg (=-1)
|
||||
Limits the maximum age (in seconds) of
|
||||
Limits the maximum age (in seconds) of
|
||||
the DPOS Irreversible Block for a chain
|
||||
this node will produce blocks on (use
|
||||
this node will produce blocks on (use
|
||||
negative value to indicate unlimited)
|
||||
-p [ --producer-name ] arg ID of producer controlled by this node
|
||||
(e.g. inita; may specify multiple
|
||||
-p [ --producer-name ] arg ID of producer controlled by this node
|
||||
(e.g. inita; may specify multiple
|
||||
times)
|
||||
--private-key arg (DEPRECATED - Use signature-provider
|
||||
instead) Tuple of [public key, WIF
|
||||
private key] (may specify multiple
|
||||
--private-key arg (DEPRECATED - Use signature-provider
|
||||
instead) Tuple of [public key, WIF
|
||||
private key] (may specify multiple
|
||||
times)
|
||||
--signature-provider arg (=EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3)
|
||||
Key=Value pairs in the form
|
||||
Key=Value pairs in the form
|
||||
<public-key>=<provider-spec>
|
||||
Where:
|
||||
<public-key> is a string form of
|
||||
<public-key> is a string form of
|
||||
a vaild EOSIO public
|
||||
key
|
||||
|
||||
<provider-spec> is a string in the
|
||||
|
||||
<provider-spec> is a string in the
|
||||
form <provider-type>
|
||||
:<data>
|
||||
|
||||
|
||||
<provider-type> is KEY, or KEOSD
|
||||
|
||||
KEY:<data> is a string form of
|
||||
a valid EOSIO
|
||||
private key which
|
||||
|
||||
KEY:<data> is a string form of
|
||||
a valid EOSIO
|
||||
private key which
|
||||
maps to the provided
|
||||
public key
|
||||
|
||||
KEOSD:<data> is the URL where
|
||||
keosd is available
|
||||
and the approptiate
|
||||
wallet(s) are
|
||||
|
||||
KEOSD:<data> is the URL where
|
||||
keosd is available
|
||||
and the approptiate
|
||||
wallet(s) are
|
||||
unlocked
|
||||
--keosd-provider-timeout arg (=5) Limits the maximum time (in
|
||||
milliseconds) that is allowed for
|
||||
sending blocks to a keosd provider for
|
||||
--keosd-provider-timeout arg (=5) Limits the maximum time (in
|
||||
milliseconds) that is allowed for
|
||||
sending blocks to a keosd provider for
|
||||
signing
|
||||
--greylist-account arg account that can not access to extended
|
||||
CPU/NET virtual resources
|
||||
--greylist-limit arg (=1000) Limit (between 1 and 1000) on the
|
||||
--greylist-limit arg (=1000) Limit (between 1 and 1000) on the
|
||||
multiple that CPU/NET virtual resources
|
||||
can extend during low usage (only
|
||||
enforced subjectively; use 1000 to not
|
||||
can extend during low usage (only
|
||||
enforced subjectively; use 1000 to not
|
||||
enforce any limit)
|
||||
--produce-time-offset-us arg (=0) Offset of non last block producing time
|
||||
in microseconds. Valid range 0 ..
|
||||
in microseconds. Valid range 0 ..
|
||||
-block_time_interval.
|
||||
--last-block-time-offset-us arg (=-200000)
|
||||
Offset of last block producing time in
|
||||
microseconds. Valid range 0 ..
|
||||
Offset of last block producing time in
|
||||
microseconds. Valid range 0 ..
|
||||
-block_time_interval.
|
||||
--cpu-effort-percent arg (=80) Percentage of cpu block production time
|
||||
used to produce block. Whole number
|
||||
used to produce block. Whole number
|
||||
percentages, e.g. 80 for 80%
|
||||
--last-block-cpu-effort-percent arg (=80)
|
||||
Percentage of cpu block production time
|
||||
used to produce last block. Whole
|
||||
used to produce last block. Whole
|
||||
number percentages, e.g. 80 for 80%
|
||||
--max-block-cpu-usage-threshold-us arg (=5000)
|
||||
Threshold of CPU block production to
|
||||
consider block full; when within
|
||||
threshold of max-block-cpu-usage block
|
||||
Threshold of CPU block production to
|
||||
consider block full; when within
|
||||
threshold of max-block-cpu-usage block
|
||||
can be produced immediately
|
||||
--max-block-net-usage-threshold-bytes arg (=1024)
|
||||
Threshold of NET block production to
|
||||
consider block full; when within
|
||||
threshold of max-block-net-usage block
|
||||
Threshold of NET block production to
|
||||
consider block full; when within
|
||||
threshold of max-block-net-usage block
|
||||
can be produced immediately
|
||||
--max-scheduled-transaction-time-per-block-ms arg (=100)
|
||||
Maximum wall-clock time, in
|
||||
milliseconds, spent retiring scheduled
|
||||
transactions in any block before
|
||||
returning to normal transaction
|
||||
Maximum wall-clock time, in
|
||||
milliseconds, spent retiring scheduled
|
||||
transactions in any block before
|
||||
returning to normal transaction
|
||||
processing.
|
||||
--subjective-cpu-leeway-us arg (=31000)
|
||||
Time in microseconds allowed for a
|
||||
transaction that starts with
|
||||
insufficient CPU quota to complete and
|
||||
Time in microseconds allowed for a
|
||||
transaction that starts with
|
||||
insufficient CPU quota to complete and
|
||||
cover its CPU usage.
|
||||
--subjective-account-max-failures arg (=3)
|
||||
Sets the maximum amount of failures
|
||||
that are allowed for a given account
|
||||
Sets the maximum amount of failures
|
||||
that are allowed for a given account
|
||||
per block.
|
||||
Disregarded for accounts that have been
|
||||
whitelisted by disabling subjective
|
||||
@@ -128,33 +128,33 @@ Config Options for eosio::producer_plugin:
|
||||
Sets the time to return full subjective
|
||||
cpu for accounts
|
||||
--incoming-defer-ratio arg (=1) ratio between incoming transactions and
|
||||
deferred transactions when both are
|
||||
deferred transactions when both are
|
||||
queued for execution
|
||||
--incoming-transaction-queue-size-mb arg (=1024)
|
||||
Maximum size (in MiB) of the incoming
|
||||
Maximum size (in MiB) of the incoming
|
||||
transaction queue. Exceeding this value
|
||||
will subjectively drop transaction with
|
||||
resource exhaustion.
|
||||
--disable-api-persisted-trx Disable the re-apply of API
|
||||
--disable-api-persisted-trx Disable the re-apply of API
|
||||
transactions.
|
||||
--disable-subjective-billing arg (=1) Disable subjective CPU billing for
|
||||
--disable-subjective-billing arg (=1) Disable subjective CPU billing for
|
||||
API/P2P transactions
|
||||
--disable-subjective-account-billing arg
|
||||
Account which is excluded from
|
||||
Account which is excluded from
|
||||
subjective CPU billing
|
||||
Account is considered whitelisted and
|
||||
will not be subject to enforcement of
|
||||
subjective-account-max-failures.
|
||||
--disable-subjective-p2p-billing arg (=1)
|
||||
Disable subjective CPU billing for P2P
|
||||
Disable subjective CPU billing for P2P
|
||||
transactions
|
||||
--disable-subjective-api-billing arg (=1)
|
||||
Disable subjective CPU billing for API
|
||||
Disable subjective CPU billing for API
|
||||
transactions
|
||||
--producer-threads arg (=2) Number of worker threads in producer
|
||||
--producer-threads arg (=2) Number of worker threads in producer
|
||||
thread pool
|
||||
--snapshots-dir arg (="snapshots") the location of the snapshots directory
|
||||
(absolute path or relative to
|
||||
(absolute path or relative to
|
||||
application data dir)
|
||||
```
|
||||
|
||||
@@ -172,7 +172,7 @@ The option below sets the ratio between the incoming transaction and the deferre
|
||||
--incoming-defer-ratio arg (=1)
|
||||
```
|
||||
|
||||
By default value of `1`, the `producer` plugin processes one incoming transaction per deferred transaction. When `arg` sets to `10`, the `producer` plugin processes 10 incoming transactions per deferred transaction.
|
||||
By default value of `1`, the `producer` plugin processes one incoming transaction per deferred transaction. When `arg` sets to `10`, the `producer` plugin processes 10 incoming transactions per deferred transaction.
|
||||
|
||||
If the `arg` is set to a sufficiently large number, the plugin always processes the incoming transaction first until the queue of the incoming transactions is empty. Respectively, if the `arg` is 0, the `producer` plugin processes the deferred transactions queue first.
|
||||
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ This procedure records the current chain state and future history, without previ
|
||||
|
||||
2. Make sure `data/state` does not exist
|
||||
|
||||
3. Start `nodeos` with the `--snapshot` option, and the options listed in the [`state_history_plugin`](#index.md).
|
||||
3. Start `nodeos` with the `--snapshot` option, and the options listed in the [`state_history_plugin`](index.md).
|
||||
|
||||
4. Look for `Placing initial state in block n` in the log, where n is the start block number.
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ This procedure restores an existing snapshot with full history, so the node can
|
||||
|
||||
2. Make sure `data/state` does not exist
|
||||
|
||||
3. Start `nodeos` with the `--snapshot` option, and the options listed in the [`state_history_plugin`](#index.md).
|
||||
3. Start `nodeos` with the `--snapshot` option, and the options listed in the [`state_history_plugin`](index.md).
|
||||
|
||||
4. Do not stop `nodeos` until it has received at least 1 block from the network, or it won't be able to restart.
|
||||
|
||||
|
||||
@@ -48,11 +48,6 @@ Config Options for eosio::state_history_plugin:
|
||||
|
||||
## Examples
|
||||
|
||||
### history-tools
|
||||
|
||||
* [Source code](https://github.com/EOSIO/history-tools/)
|
||||
* [Documentation](https://eosio.github.io/history-tools/)
|
||||
|
||||
## Dependencies
|
||||
|
||||
* [`chain_plugin`](../chain_plugin/index.md)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
The `txn_test_gen_plugin` is used for transaction test purposes.
|
||||
|
||||
[[info | For More Information]]
|
||||
For more information, check the [txn_test_gen_plugin/README.md](https://github.com/EOSIO/eos/blob/develop/plugins/txn_test_gen_plugin/README.md) on the EOSIO/eos repository.
|
||||
For more information, check the [txn_test_gen_plugin/README.md](https://github.com/eosnetworkfoundation/mandel/tree/main/plugins/txn_test_gen_plugin) on the EOSIO/eos repository.
|
||||
|
||||
## Usage
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ Once you have obtained a copy of a valid snapshot file from which you wish to cr
|
||||
|
||||
location | name | action
|
||||
----------------- | -------------------------- | ------------
|
||||
data/snapshots | <head block id in hex>.bin | place the snapshot file you want to replay here
|
||||
data/snapshots | `<head block id in hex>.bin` | place the snapshot file you want to replay here
|
||||
data/ | * | remove
|
||||
|
||||
You can use `snapshots-dir = "snapshots" ` in the configuration file or using the `--snapshots-dir` command line option, to specify the where to find the the snapshot to replay, use `--snapshot` to specify the name of the snapshot to replay.
|
||||
|
||||
@@ -17,7 +17,7 @@ Snapshot files can be created from a running `nodeos` instance. The snapshot con
|
||||
* [How To Generate a Blocks Log](how-to-generate-a-blocks.log.md)
|
||||
* [How To Generate a Snapshot](how-to-generate-a-snapshot.md)
|
||||
* [How To Replay from a Blocks Log](how-to-replay-from-a-blocks.log.md)
|
||||
* [How to Replay from a Snapshot](how-to-replay-from-a-snapshot.md)
|
||||
* [How to Replay from a Snapshot](../04_replays/how-to-replay-from-a-snapshot.md)
|
||||
|
||||
## Replay Snapshot-specific Options
|
||||
|
||||
@@ -41,9 +41,9 @@ This tells `nodeos` to clear the local chain state and local the `blocks.log` fi
|
||||
- **--truncate-at-block**
|
||||
Default argument (=0), only used if the given value is non-zero.
|
||||
Using this option when replaying the blockchain will force the replay to stop at the specified block number. This option will only work if replaying with the `--hard-replay-blockchain` option. The local `nodeos` process will contain the chain state for that block. This option may be useful for checking blockchain state at specific points in time. It is intended for testing/validation and is not intended to be used when creating a local `nodeos` instance which is synchronized with the network.
|
||||
|
||||
|
||||
- **--snapshot**
|
||||
Use this option to specify which snapshot file to use to recreate the chain state from a snapshot file. This option will not replay the `blocks.log` file. The `nodeos` instance will not know the full transaction history of the blockchain.
|
||||
Use this option to specify which snapshot file to use to recreate the chain state from a snapshot file. This option will not replay the `blocks.log` file. The `nodeos` instance will not know the full transaction history of the blockchain.
|
||||
|
||||
- **--snapshots-dir**
|
||||
You can use this to specify the location of the snapshot file directory (absolute path or relative to application data dir.)
|
||||
|
||||
@@ -17,7 +17,7 @@ Every `nodeos` instance creates some internal files to housekeep the blockchain
|
||||
|
||||
## EOSIO Interfaces
|
||||
|
||||
EOSIO provides a set of [services](../../) and [interfaces](https://developers.eos.io/manuals/eosio.cdt/latest/files) that enable contract developers to persist state across action, and consequently transaction, boundaries. Contracts may use these services and interfaces for various purposes. For example, `eosio.token` contract keeps balances for all users in the chain database. Each instance of `nodeos` keeps the database in memory, so contracts can read and write data with ease.
|
||||
EOSIO provides a set of [services](../../) and [interfaces](https://docs.eosnetwork.com/reference/mandel-cdt/files.html) that enable contract developers to persist state across action, and consequently transaction, boundaries. Contracts may use these services and interfaces for various purposes. For example, `eosio.token` contract keeps balances for all users in the chain database. Each instance of `nodeos` keeps the database in memory, so contracts can read and write data with ease.
|
||||
|
||||
### Nodeos RPC API
|
||||
|
||||
@@ -40,7 +40,7 @@ Clients such as `cleos` and the RPC API, will see database state as of the curre
|
||||
|
||||
Speculative mode is low latency but fragile, there is no guarantee that the transactions reflected in the state will be included in the chain OR that they will reflected in the same order the state implies.
|
||||
|
||||
This mode features the lowest latency, but is the least consistent.
|
||||
This mode features the lowest latency, but is the least consistent.
|
||||
|
||||
In speculative mode `nodeos` is able to execute transactions which have TaPoS (Transaction as Proof of Stake) pointing to any valid block in a fork considered to be the best fork by this node.
|
||||
|
||||
@@ -61,7 +61,7 @@ Clients such as `cleos` and the RPC API will see database state as of the curren
|
||||
|
||||
### Irreversible Mode
|
||||
|
||||
When `nodeos` is configured to be in irreversible read mode, it will still track the most up-to-date blocks in the fork database, but the state will lag behind the current best head block, sometimes referred to as the fork DB head, to always reflect the state of the last irreversible block.
|
||||
When `nodeos` is configured to be in irreversible read mode, it will still track the most up-to-date blocks in the fork database, but the state will lag behind the current best head block, sometimes referred to as the fork DB head, to always reflect the state of the last irreversible block.
|
||||
|
||||
Clients such as `cleos` and the RPC API will see database state as of the current head block of the chain. It **will not** include changes made by transactions known to this node but not included in the chain, such as unconfirmed transactions.
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ content_title: Nodeos Troubleshooting
|
||||
|
||||
### "Database dirty flag set (likely due to unclean shutdown): replay required"
|
||||
|
||||
`nodeos` needs to be shut down cleanly. To ensure this is done, send a `SIGTERM`, `SIGQUIT` or `SIGINT` and wait for the process to shutdown. Failing to do this will result in this error. If you get this error, your only recourse is to replay by starting `nodeos` with `--replay-blockchain`
|
||||
`nodeos` needs to be shut down cleanly. To ensure this is done, send a `SIGTERM`, `SIGQUIT` or `SIGINT` and wait for the process to shutdown. Failing to do this will result in this error. If you get this error, your only recourse is to replay by starting `nodeos` with `--replay-blockchain`
|
||||
|
||||
### "Memory does not match data" Error at Restart
|
||||
|
||||
@@ -12,15 +12,15 @@ If you get an error such as `St9exception: content of memory does not match data
|
||||
|
||||
```
|
||||
Command Line Options for eosio::chain_plugin:
|
||||
--force-all-checks do not skip any checks that can be
|
||||
skipped while replaying irreversible
|
||||
--force-all-checks do not skip any checks that can be
|
||||
skipped while replaying irreversible
|
||||
blocks
|
||||
--replay-blockchain clear chain state database and replay
|
||||
--replay-blockchain clear chain state database and replay
|
||||
all blocks
|
||||
--hard-replay-blockchain clear chain state database, recover as
|
||||
many blocks as possible from the block
|
||||
--hard-replay-blockchain clear chain state database, recover as
|
||||
many blocks as possible from the block
|
||||
log, and then replay those blocks
|
||||
--delete-all-blocks clear chain state database and block
|
||||
--delete-all-blocks clear chain state database and block
|
||||
log
|
||||
```
|
||||
|
||||
@@ -44,4 +44,4 @@ cleos --url http://localhost:8888 get info | grep server_version
|
||||
|
||||
### Error 3070000: WASM Exception Error
|
||||
|
||||
If you try to deploy the `eosio.bios` contract or `eosio.system` contract in an attempt to boot an EOSIO-based blockchain and you get the following error or similar: `Publishing contract... Error 3070000: WASM Exception Error Details: env.set_proposed_producers_ex unresolveable`, it is because you have to activate the `PREACTIVATE_FEATURE` protocol first. More details about it and how to enable it can be found in the [Bios Boot Sequence Tutorial](https://developers.eos.io/welcome/latest/tutorials/bios-boot-sequence/#112-set-the-eosiosystem-contract). For more information, you may also visit the [Nodeos Upgrade Guides](https://developers.eos.io/manuals/eos/latest/nodeos/upgrade-guides/).
|
||||
If you try to deploy the `eosio.bios` contract or `eosio.system` contract in an attempt to boot an EOSIO-based blockchain and you get the following error or similar: `Publishing contract... Error 3070000: WASM Exception Error Details: env.set_proposed_producers_ex unresolveable`, it is because you have to activate the `PREACTIVATE_FEATURE` protocol first.
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
---
|
||||
link: https://github.com/EOSIO/eos/issues/7597
|
||||
---
|
||||
@@ -8,7 +8,7 @@ content_title: Nodeos
|
||||
|
||||
## Installation
|
||||
|
||||
`nodeos` is distributed as part of the [EOSIO software suite](https://github.com/EOSIO/eos/blob/master/README.md). To install `nodeos`, visit the [EOSIO Software Installation](../00_install/index.md) section.
|
||||
`nodeos` is distributed as part of the [EOSIO software suite](https://github.com/eosnetworkfoundation/mandel). To install `nodeos`, visit the [EOSIO Software Installation](../00_install/index.md) section.
|
||||
|
||||
## Explore
|
||||
|
||||
@@ -21,7 +21,6 @@ Navigate the sections below to configure and use `nodeos`.
|
||||
* [Logging](06_logging/index.md) - Logging config/usage, loggers, appenders, logging levels.
|
||||
* [Concepts](07_concepts/index.md) - `nodeos` concepts, explainers, implementation aspects.
|
||||
* [Troubleshooting](08_troubleshooting/index.md) - Common `nodeos` troubleshooting questions.
|
||||
* [Deprecation Notices](https://github.com/EOSIO/eos/issues/7597) - Lists `nodeos` deprecated functionality.
|
||||
|
||||
[[info | Access Node]]
|
||||
| A local or remote EOSIO access node running `nodeos` is required for a client application or smart contract to interact with the blockchain.
|
||||
|
||||
@@ -13,9 +13,9 @@ Make sure you meet the following requirements:
|
||||
[[info | Note]]
|
||||
| `cleos` is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install `cleos`.
|
||||
|
||||
* Understand what an [account](https://developers.eos.io/welcome/latest/glossary/index/#account) is and its role in the blockchain.
|
||||
* Understand [Accounts and Permissions](https://developers.eos.io/welcome/latest/protocol-guides/accounts_and_permissions) in the protocol documents.
|
||||
* Understand what a [public](https://developers.eos.io/welcome/latest/glossary/index/#public-key) and [private](https://developers.eos.io/welcome/latest/glossary/index/#private-key) key pair is.
|
||||
* Understand what an [account](/glossary.md#account) is and its role in the blockchain.
|
||||
* Understand [Accounts and Permissions](/protocol-guides/04_accounts_and_permissions.md) in the protocol documents.
|
||||
* Understand what a [public](/glossary.md#public-key) and [private](/glossary.md#private-key) key pair is.
|
||||
|
||||
## Steps
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
This how-to guide provides instructions on how to create a new EOSIO blockchain account using the `cleos` CLI tool. You can use accounts to deploy smart contracts and perform other related blockchain operations. Create one or multiple accounts as part of your development environment setup.
|
||||
|
||||
The example in this how-to guide creates a new account named **bob**, authorized by the default system account **eosio**, using the `cleos` CLI tool.
|
||||
The example in this how-to guide creates a new account named **bob**, authorized by the default system account **eosio**, using the `cleos` CLI tool.
|
||||
|
||||
## Before you Begin
|
||||
|
||||
@@ -10,9 +10,9 @@ Make sure you meet the following requirements:
|
||||
|
||||
* Install the currently supported version of `cleos`.
|
||||
[[info | Note]]
|
||||
| The cleos tool is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install the cleos tool.
|
||||
* Learn about [EOSIO Accounts and Permissions](https://developers.eos.io/welcome/v2.1/protocol/accounts_and_permissions)
|
||||
* Learn about Asymmetric Cryptography - [public key](https://developers.eos.io/welcome/v2.1/glossary/index#public-key) and [private key](https://developers.eos.io/welcome/v2.1/glossary/index#private-key) pairs.
|
||||
| The cleos tool is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install the cleos tool.
|
||||
* Learn about [EOSIO Accounts and Permissions](/protocol-guides/04_accounts_and_permissions.md)
|
||||
* Learn about Asymmetric Cryptography - [public key](/glossary.md#public-key) and [private key](/glossary.md#private-key) pairs.
|
||||
* Create public/private keypairs for the `owner` and `active` permissions of an account.
|
||||
|
||||
## Command Reference
|
||||
@@ -31,7 +31,7 @@ cleos create account eosio bob EOS87TQktA5RVse2EguhztfQVEh6XXxBmgkU8b4Y5YnGvtYAo
|
||||
```
|
||||
**Where**:
|
||||
* `eosio` = the system account that authorizes the creation of a new account
|
||||
* `bob` = the name of the new account conforming to [account naming conventions](https://developers.eos.io/welcome/v2.1/protocol-guides/accounts_and_permissions#2-accounts)
|
||||
* `bob` = the name of the new account conforming to [account naming conventions](/protocol-guides/04_accounts_and_permissions.md#2-accounts)
|
||||
* `EOS87TQ...AoLGNN` = the owner public key or permission level for the new account (**required**)
|
||||
[[info | Note]]
|
||||
| To create a new account in the EOSIO blockchain, an existing account, also referred to as a creator account, is required to authorize the creation of a new account. For a newly created EOSIO blockchain, the default system account used to create a new account is **eosio**.
|
||||
|
||||
@@ -12,10 +12,10 @@ Make sure you meet the following requirements:
|
||||
[[info | Note]]
|
||||
| `cleos` is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install `cleos`.
|
||||
|
||||
* Ensure the reference system contracts from [`eosio.contracts`](https://github.com/EOSIO/eosio.contracts) repository is deployed and used to manage system resources.
|
||||
* Understand what an [account](https://developers.eos.io/welcome/latest/glossary/index/#account) is and its role in the blockchain.
|
||||
* Understand [CPU bandwidth](https://developers.eos.io/welcome/latest/glossary/index/#cpu) in an EOSIO blockchain.
|
||||
* Understand [NET bandwidth](https://developers.eos.io/welcome/latest/glossary/index/#net) in an EOSIO blockchain.
|
||||
* Ensure the reference system contracts from [`eosio.contracts`](https://github.com/eosnetworkfoundation/mandel-contracts) repository is deployed and used to manage system resources.
|
||||
* Understand what an [account](/glossary.md#account) is and its role in the blockchain.
|
||||
* Understand [CPU bandwidth](/glossary.md#cpu) in an EOSIO blockchain.
|
||||
* Understand [NET bandwidth](/glossary.md#net) in an EOSIO blockchain.
|
||||
|
||||
## Steps
|
||||
|
||||
|
||||
@@ -12,10 +12,10 @@ Make sure you meet the following requirements:
|
||||
[[info | Note]]
|
||||
| `cleos` is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install `cleos`.
|
||||
|
||||
* Ensure the reference system contracts from [`eosio.contracts`](https://github.com/EOSIO/eosio.contracts) repository is deployed and used to manage system resources.
|
||||
* Understand what an [account](https://developers.eos.io/welcome/latest/glossary/index/#account) is and its role in the blockchain.
|
||||
* Understand [NET bandwidth](https://developers.eos.io/welcome/latest/glossary/index/#net) in an EOSIO blockchain.
|
||||
* Understand [CPU bandwidth](https://developers.eos.io/welcome/latest/glossary/index/#cpu) in an EOSIO blockchain.
|
||||
* Ensure the reference system contracts from [`eosio.contracts`](https://github.com/eosnetworkfoundation/mandel-contracts) repository is deployed and used to manage system resources.
|
||||
* Understand what an [account](/glossary.md#account) is and its role in the blockchain.
|
||||
* Understand [NET bandwidth](/glossary.md#net) in an EOSIO blockchain.
|
||||
* Understand [CPU bandwidth](/glossary.md#cpu) in an EOSIO blockchain.
|
||||
|
||||
## Steps
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
## Overview
|
||||
|
||||
This how-to guide provides instructions on how to query infomation of an EOSIO account. The example in this how-to guide retrieves information of the `eosio` account.
|
||||
This how-to guide provides instructions on how to query infomation of an EOSIO account. The example in this how-to guide retrieves information of the `eosio` account.
|
||||
|
||||
## Before you begin
|
||||
|
||||
* Install the currently supported version of `cleos`
|
||||
|
||||
[[info | Note]]
|
||||
| The cleos tool is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install the cleos tool.
|
||||
| The cleos tool is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install the cleos tool.
|
||||
|
||||
* Acquire functional understanding of [EOSIO Accounts and Permissions](https://developers.eos.io/welcome/v2.1/protocol/accounts_and_permissions)
|
||||
* Acquire functional understanding of [EOSIO Accounts and Permissions](/protocol-guides/04_accounts_and_permissions.md)
|
||||
|
||||
## Command Reference
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@ Make sure to meet the following requirements:
|
||||
[[info | Note]]
|
||||
| `cleos` is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install `cleos`.
|
||||
|
||||
* Understand what a [block](https://developers.eos.io/welcome/latest/glossary/index/#block) is and its role in the blockchain.
|
||||
* Understand the [block lifecycle](https://developers.eos.io/welcome/latest/protocol-guides/consensus_protocol/#5-block-lifecycle) in the EOSIO consensus protocol.
|
||||
* Understand what a [block](/glossary.md#block) is and its role in the blockchain.
|
||||
* Understand the [block lifecycle](/protocol-guides/01_consensus_protocol.md#5-block-lifecycle) in the EOSIO consensus protocol.
|
||||
|
||||
## Steps
|
||||
|
||||
@@ -34,8 +34,10 @@ Some examples are provided below:
|
||||
**Example Output**
|
||||
|
||||
```sh
|
||||
cleos -u https://api.testnet.eos.io get block 48351112
|
||||
cleos -u https://choiceofyourprovider get block 48351112
|
||||
```
|
||||
Reference to [testnet providers](/resources/index.md)
|
||||
|
||||
```json
|
||||
{
|
||||
"timestamp": "2021-01-28T17:58:59.500",
|
||||
@@ -59,7 +61,7 @@ cleos -u https://api.testnet.eos.io get block 48351112
|
||||
**Example Output**
|
||||
|
||||
```sh
|
||||
cleos -u https://api.testnet.eos.io get block 02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba
|
||||
cleos -u https://choiceofyourprovider get block 02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba
|
||||
```
|
||||
```json
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
This how-to guide provides instructions on how to retrieve infomation of an EOSIO transaction using a transaction ID.
|
||||
|
||||
The example in this how-to retrieves transaction information associated with the creation of the account **bob**.
|
||||
The example in this how-to retrieves transaction information associated with the creation of the account **bob**.
|
||||
|
||||
## Before you begin
|
||||
|
||||
@@ -10,7 +10,7 @@ Make sure you meet the following requirements:
|
||||
* Install the currently supported version of `cleos`.
|
||||
[[info | Note]]
|
||||
| `cleos` is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install `cleos`.
|
||||
* Understand how transactions work in an EOSIO blockchain. For more information on transactions, see the [Transactions Protocol](https://developers.eos.io/welcome/latest/protocol-guides/transactions_protocol) section.
|
||||
* Understand how transactions work in an EOSIO blockchain. For more information on transactions, see the [Transactions Protocol](/protocol-guides/02_transactions_protocol.md) section.
|
||||
|
||||
## Command Reference
|
||||
|
||||
@@ -25,7 +25,7 @@ The following step shows how to retrieve transaction information associated with
|
||||
```sh
|
||||
cleos get transaction 870a6b6e3882061ff0f64016e1eedfdd9439e2499bf978c3fb29fcedadada9b1
|
||||
```
|
||||
* Where `870a6b6e38...dada9b1`= The transaction ID associated with the creation of account **bob**.
|
||||
* Where `870a6b6e38...dada9b1`= The transaction ID associated with the creation of account **bob**.
|
||||
|
||||
**Example Output**
|
||||
|
||||
@@ -179,7 +179,7 @@ The `cleos` command returns detailed information of the transaction:
|
||||
|
||||
## Summary
|
||||
|
||||
By following these instructions, you are able to retrieve transaction information using a transaction ID.
|
||||
By following these instructions, you are able to retrieve transaction information using a transaction ID.
|
||||
|
||||
## Trobleshooting
|
||||
|
||||
@@ -195,4 +195,4 @@ Error Details:
|
||||
History API plugin is not enabled
|
||||
```
|
||||
|
||||
To troubleshoot this error, enable the [history plugin](../../01_nodeos/03_plugins/history_plugin/index.md) and [history API plugin](../../01_nodeos/03_plugins/history_api_plugin/index.md), then run the command again.
|
||||
To troubleshoot this error, enable the [history plugin](../../01_nodeos/03_plugins/history_plugin/index.md) and [history API plugin](../../01_nodeos/03_plugins/history_api_plugin/index.md), then run the command again.
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
## Overview
|
||||
|
||||
This how-to guide provides instructions on how to import a private key into the `keosd` default wallet. You can use the private key to authorize transactions in an EOSIO blockchain.
|
||||
This how-to guide provides instructions on how to import a private key into the `keosd` default wallet. You can use the private key to authorize transactions in an EOSIO blockchain.
|
||||
|
||||
## Before you Begin
|
||||
|
||||
Make sure you meet the following requirements:
|
||||
|
||||
* Create a default wallet using the `cleos wallet create` command. See the [How to Create a Wallet](../02_how-to-guides/how-to-create-a-wallet.md) section for instructions.
|
||||
* Create a default wallet using the `cleos wallet create` command. See the [How to Create a Wallet](../02_how-to-guides/how-to-create-a-wallet.md) section for instructions.
|
||||
* Open and unlock the created wallet.
|
||||
* Familiarize with the [`cleos wallet import`](../03_command-reference/wallet/import.md) command.
|
||||
* Install the currently supported version of `cleos`.
|
||||
[[info | Note]]
|
||||
| `cleos` is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install `cleos`.
|
||||
* Understand what a [public key](https://developers.eos.io/welcome/latest/glossary/index/#public-key) and [private key](https://developers.eos.io/welcome/latest/glossary/index/#private-key) is.
|
||||
* Understand what a [public key](/glossary.md#public-key) and [private key](/glossary.md#private-key) is.
|
||||
|
||||
## Command Reference
|
||||
|
||||
@@ -31,7 +31,7 @@ cleos wallet import
|
||||
private key:
|
||||
```
|
||||
|
||||
2. Enter the private key and hit Enter.
|
||||
2. Enter the private key and hit Enter.
|
||||
```sh
|
||||
***
|
||||
```
|
||||
@@ -44,4 +44,4 @@ imported private key for: EOS8FBXJUfbANf3xeDWPoJxnip3Ych9HjzLBr1VaXRQFdkVAxwLE7
|
||||
|
||||
## Summary
|
||||
|
||||
By following these instructions, you are able to import a private key to the default wallet.
|
||||
By following these instructions, you are able to import a private key to the default wallet.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
## Overview
|
||||
|
||||
This how-to guide provides instructions on how to list all public keys and public/private key pairs within the `keosd` default wallet. You can use the public and private keys to authorize transactions in an EOSIO blockchain.
|
||||
This how-to guide provides instructions on how to list all public keys and public/private key pairs within the `keosd` default wallet. You can use the public and private keys to authorize transactions in an EOSIO blockchain.
|
||||
|
||||
The example in this how-to guide displays all public keys and public/private key pairs stored within the existing default wallet.
|
||||
|
||||
@@ -8,13 +8,13 @@ The example in this how-to guide displays all public keys and public/private key
|
||||
|
||||
Make sure you meet the following requirements:
|
||||
|
||||
* Create a default wallet using the `cleos wallet create` command. See the [How to Create a Wallet](../02_how-to-guides/how-to-create-a-wallet.md) section for instructions.
|
||||
* Create a default wallet using the `cleos wallet create` command. See the [How to Create a Wallet](../02_how-to-guides/how-to-create-a-wallet.md) section for instructions.
|
||||
* [Create a keypair](../03_command-reference/wallet/create_key.md) within the default wallet.
|
||||
* Familiarize with the [`cleos wallet`](../03_command-reference/wallet/index.md) commands.
|
||||
* Install the currently supported version of `cleos`.
|
||||
[[info | Note]]
|
||||
| `cleos` is bundled with the EOSIO software. [Installing EOSIO](../../00_install/index.md) will also install `cleos`.
|
||||
* Understand what a [public key](https://developers.eos.io/welcome/latest/glossary/index/#public-key) and [private key](https://developers.eos.io/welcome/latest/glossary/index/#private-key) is.
|
||||
* Understand what a [public key](/glossary.md#public-key) and [private key](/glossary.md#private-key) is.
|
||||
|
||||
## Command Reference
|
||||
|
||||
@@ -71,7 +71,7 @@ cleos wallet private_keys
|
||||
password:
|
||||
```
|
||||
|
||||
6. Enter the generated password when you created the default wallet:
|
||||
6. Enter the generated password when you created the default wallet:
|
||||
```sh
|
||||
***
|
||||
```
|
||||
@@ -86,7 +86,7 @@ password: [[
|
||||
```
|
||||
|
||||
[[caution | Warning]]
|
||||
| Never reveal your private keys in a production environment.
|
||||
| Never reveal your private keys in a production environment.
|
||||
|
||||
[[info | Note]]
|
||||
| If the above commands does not list any keys, make sure you have created keypairs and imported private keys to your wallet.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Pack and unpack transactions
|
||||
|
||||
## subcommands
|
||||
- [pack_transaction](pack_transaction) - From plain signed json to packed form
|
||||
- [unpack_transaction](unpack_transaction) - From packed to plain signed json form
|
||||
- [pack_action_data](pack_action_data) - From json action data to packed form
|
||||
- [unpack_action_data](unpack_action_data) - From packed to json action data form
|
||||
- [pack_transaction](pack_transaction.md) - From plain signed json to packed form
|
||||
- [unpack_transaction](unpack_transaction.md) - From packed to plain signed json form
|
||||
- [pack_action_data](pack_action_data.md) - From json action data to packed form
|
||||
- [unpack_action_data](unpack_action_data.md) - From packed to json action data form
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
Create various items, on and off the blockchain
|
||||
|
||||
## Subcommands
|
||||
- [key](key) - Create a new keypair and print the public and private keys
|
||||
- [account](account) - Create a new account on the blockchain
|
||||
- [key](key.md) - Create a new keypair and print the public and private keys
|
||||
- [account](account.md) - Create a new account on the blockchain
|
||||
|
||||
```console
|
||||
Create various items, on and off the blockchain
|
||||
|
||||
Executable → Regular
+3
-3
@@ -17,10 +17,10 @@ cleos get account eosio
|
||||
```
|
||||
```console
|
||||
privileged: true
|
||||
permissions:
|
||||
permissions:
|
||||
owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
|
||||
active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
|
||||
memory:
|
||||
memory:
|
||||
quota: -1 bytes used: 1.22 Mb
|
||||
|
||||
net bandwidth: (averaged over 3 days)
|
||||
@@ -106,4 +106,4 @@ cleos get account eosio --json
|
||||
```
|
||||
|
||||
## See Also
|
||||
- [Accounts and Permissions](https://developers.eos.io/welcome/latest/protocol/accounts_and_permissions) protocol document.
|
||||
- [Accounts and Permissions](/protocol-guides/04_accounts_and_permissions.md) protocol document.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Gets current blockchain state and, if available, transaction information given the transaction id.
|
||||
|
||||
For query to work, the transaction finality status feature must be enabled by configuring
|
||||
the chain plugin with the config option "--transaction-finality-status-max-storage-size-gb <size>"
|
||||
the chain plugin with the config option "--transaction-finality-status-max-storage-size-gb \<size\>"
|
||||
in nodeos.
|
||||
|
||||
## Position Parameters
|
||||
@@ -19,7 +19,7 @@ in nodeos.
|
||||
cleos get transaction-status 6438df82216dfaf46978f703fb818b49110dbfc5d9b521b5d08c342277438b29
|
||||
```
|
||||
|
||||
This command simply returns the current chain status and transaction status information (if available).
|
||||
This command simply returns the current chain status and transaction status information (if available).
|
||||
|
||||
```json
|
||||
{
|
||||
|
||||
@@ -12,7 +12,8 @@ Documentation for all `cleos` main commands
|
||||
- [sign](sign.md) - Sign a transaction
|
||||
- [push](push) - Push arbitrary transactions to the blockchain
|
||||
- [multisig](multisig) - Multisig contract commands
|
||||
<!--
|
||||
- [wrap](wrap) - Wrap contract commands
|
||||
-->
|
||||
|
||||
[//]: # ( THIS IS A COMMENT FOLLOWING LINE HAD JS COMMENTS JS COMMENTS BREAK MDX )
|
||||
[//]: # ( wrap wrap - Wrap contract commands )
|
||||
|
||||
- [system](system) - Send eosio.system contract action to the blockchain.
|
||||
|
||||
@@ -4,7 +4,11 @@ cleos net connect [OPTIONS] host
|
||||
```
|
||||
|
||||
**Where:**
|
||||
* [OPTIONS] = See **Options** in the [**Command Usage**](command-usage) section below.
|
||||
* [OPTIONS] = See **Options** section TBD
|
||||
|
||||
[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN )
|
||||
[//]: # (in the **Command Usage** command-usage section below.)
|
||||
|
||||
* host = The hostname:port to connect to
|
||||
|
||||
**Note:** The arguments and options enclosed in square brackets are optional.
|
||||
|
||||
@@ -4,8 +4,10 @@ cleos net disconnect [OPTIONS] host
|
||||
```
|
||||
|
||||
**Where:**
|
||||
* [OPTIONS] = See **Options** in the [**Command Usage**](command-usage) section below.
|
||||
* host = The hostname:port to disconnect from
|
||||
* [OPTIONS] = See **Options**section TBD
|
||||
|
||||
[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN )
|
||||
[//]: # (in the **Command Usage** command-usage section below.)
|
||||
|
||||
**Note:** The arguments and options enclosed in square brackets are optional.
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ Usage: cleos net SUBCOMMAND
|
||||
```
|
||||
|
||||
## Subcommands
|
||||
|
||||
- [cleos net connect](connect) start a new connection to a peer
|
||||
|
||||
- [cleos net disconnect](disconnect) close an existing connection
|
||||
|
||||
- [cleos net status](status) status of existing connection
|
||||
|
||||
- [cleos net peers](peers) status of all existing peers
|
||||
- [cleos net connect](connect.md) start a new connection to a peer
|
||||
|
||||
- [cleos net disconnect](disconnect.md) close an existing connection
|
||||
|
||||
- [cleos net status](status.md) status of existing connection
|
||||
|
||||
- [cleos net peers](peers.md) status of all existing peers
|
||||
|
||||
Executable → Regular
+4
-2
@@ -4,7 +4,9 @@ cleos net peers [OPTIONS]
|
||||
```
|
||||
|
||||
**Where:**
|
||||
* [OPTIONS] = See **Options** in the [**Command Usage**](command-usage) section below.
|
||||
* [OPTIONS] = See **Options** section TBD
|
||||
|
||||
[//]: # (in the **Command Usage** command-usage section below.)
|
||||
|
||||
**Note:** The arguments and options enclosed in square brackets are optional.
|
||||
|
||||
@@ -109,4 +111,4 @@ cleos -u http://127.0.0.1:8001 net peers
|
||||
]
|
||||
```
|
||||
|
||||
**Note:** The `last_handshake` field contains the chain state of each connected peer as of the last handshake message with the node. For more information read the [Handshake Message](https://developers.eos.io/welcome/latest/protocol/network_peer_protocol#421-handshake-message) in the *Network Peer Protocol* document.
|
||||
**Note:** The `last_handshake` field contains the chain state of each connected peer as of the last handshake message with the node. For more information read the [Handshake Message](/protocol-guides/03_network_peer_protocol.md#421-handshake-message) in the *Network Peer Protocol* document.
|
||||
|
||||
Executable → Regular
+6
-2
@@ -4,7 +4,11 @@ cleos net status [OPTIONS] host
|
||||
```
|
||||
|
||||
**Where:**
|
||||
* [OPTIONS] = See **Options** in the [**Command Usage**](command-usage) section below.
|
||||
* [OPTIONS] = See **Options** section TBD
|
||||
|
||||
[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN )
|
||||
[//]: # (in the **Command Usage** command-usage section below.)
|
||||
|
||||
* host = The hostname:port to query status of connection
|
||||
|
||||
**Note:** The arguments and options enclosed in square brackets are optional.
|
||||
@@ -63,4 +67,4 @@ cleos -u http://127.0.0.1:8002 net status localhost:9001
|
||||
}
|
||||
```
|
||||
|
||||
**Note:** The `last_handshake` field contains the chain state of the specified peer as of the last handshake message with the node. For more information read the [Handshake Message](https://developers.eos.io/welcome/latest/protocol/network_peer_protocol#421-handshake-message) in the *Network Peer Protocol* document.
|
||||
**Note:** The `last_handshake` field contains the chain state of the specified peer as of the last handshake message with the node. For more information read the [Handshake Message](/protocol-guides/03_network_peer_protocol.md#421-handshake-message) in the *Network Peer Protocol* document.
|
||||
|
||||
@@ -12,9 +12,9 @@ Options:
|
||||
```
|
||||
|
||||
## Subcommands
|
||||
|
||||
- [code](set-code) - create or update the code on an account
|
||||
- [abi](set-abi) - create or update the abi on an account
|
||||
- [contract](set-contract) - create or update the contract on an account
|
||||
- [account](set-account) - set or update blockchain account state
|
||||
- [action](set-action) - set or update blockchain action state
|
||||
|
||||
- [code](set-code.md) - create or update the code on an account
|
||||
- [abi](set-abi.md) - create or update the abi on an account
|
||||
- [contract](set-contract.md) - create or update the contract on an account
|
||||
- [account](set-account.md) - set or update blockchain account state
|
||||
- [action](set-action.md) - set or update blockchain action state
|
||||
|
||||
Executable → Regular
+1
-1
@@ -88,4 +88,4 @@ The authority JSON object ...
|
||||
```
|
||||
|
||||
## See Also
|
||||
- [Accounts and Permissions](https://developers.eos.io/welcome/latest/protocol/accounts_and_permissions) protocol document.
|
||||
- [Accounts and Permissions](/protocol-guides/04_accounts_and_permissions.md) protocol document.
|
||||
|
||||
Executable → Regular
+3
-3
@@ -40,7 +40,7 @@ cleos set action permission
|
||||
|
||||
`-f,--force-unique` - force the transaction to be unique. this will consume extra bandwidth and remove any protections against accidently issuing the same transaction multiple times
|
||||
|
||||
`-s,--skip-sign` Specify if unlocked wallet keys
|
||||
`-s,--skip-sign` Specify if unlocked wallet keys
|
||||
should be used to sign transaction
|
||||
|
||||
`-j,--json` print result as json
|
||||
@@ -65,9 +65,9 @@ should be used to sign transaction
|
||||
#Link a `voteproducer` action to the 'voting' permissions
|
||||
cleos set action permission sandwichfarm eosio.system voteproducer voting -p sandwichfarm@voting
|
||||
|
||||
#Now can execute the transaction with the previously set permissions.
|
||||
#Now can execute the transaction with the previously set permissions.
|
||||
cleos system voteproducer approve sandwichfarm someproducer -p sandwichfarm@voting
|
||||
```
|
||||
|
||||
## See Also
|
||||
- [Accounts and Permissions](https://developers.eos.io/welcome/latest/protocol/accounts_and_permissions) protocol document.
|
||||
- [Accounts and Permissions](/protocol-guides/04_accounts_and_permissions.md) protocol document.
|
||||
|
||||
@@ -4,22 +4,22 @@ Actions related to REX (the resource exchange).
|
||||
|
||||
## Subcommands
|
||||
|
||||
- [deposit](system-rex-deposit) - Deposit into owner's REX fund by transfering from owner's liquid token balance
|
||||
- [withdraw](system-rex-withdraw) - Withdraw from owner's REX fund by transfering to owner's liquid token balance
|
||||
- [buyrex](system-rex-buyrex) - Buy REX using tokens in owner's REX fund
|
||||
- [lendrex](system-rex-lendrex) - Deposit tokens to REX fund and use the tokens to buy REX
|
||||
- [unstaketorex](system-rex-unstaketorex) - Buy REX using staked tokens
|
||||
- [sellrex](system-rex-sellrex) - Sell REX tokens
|
||||
- [cancelrexorder](system-rex-cancelrexorder) - Cancel queued REX sell order if one exists
|
||||
- [mvtosavings](system-rex-mvtosavings) - Move REX tokens to savings bucket
|
||||
- [mvfromsavings](system-rex-mvfromsavings) - Move REX tokens out of savings bucket
|
||||
- [rentcpu](system-rex-rentcpu) - Rent CPU bandwidth for 30 days
|
||||
- [rentnet](system-rex-rentnet) - Rent Network bandwidth for 30 days
|
||||
- [fundcpuloan](system-rex-fundcpuloan) - Deposit into a CPU loan fund
|
||||
- [fundnetloan](system-rex-fundnetloan) - Deposit into a Network loan fund
|
||||
- [defundcpuloan](system-rex-defundcpuloan) - Withdraw from a CPU loan fund
|
||||
- [defundnetloan](system-rex-defundnetloan) - Withdraw from a Network loan fund
|
||||
- [consolidate](system-rex-consolidate) - Consolidate REX maturity buckets into one that matures in 4 days
|
||||
- [updaterex](system-rex-updaterex) - Update REX owner vote stake and vote weight
|
||||
- [rexexec](system-rex-rexexec) - Perform REX maintenance by processing expired loans and unfilled sell orders
|
||||
- [closerex](system-rex-closerex) - Delete unused REX-related user table entries
|
||||
- [deposit](system-rex-deposit.md) - Deposit into owner's REX fund by transfering from owner's liquid token balance
|
||||
- [withdraw](system-rex-withdraw.md) - Withdraw from owner's REX fund by transfering to owner's liquid token balance
|
||||
- [buyrex](system-rex-buyrex.md) - Buy REX using tokens in owner's REX fund
|
||||
- [lendrex](system-rex-lendrex.md) - Deposit tokens to REX fund and use the tokens to buy REX
|
||||
- [unstaketorex](system-rex-unstaketorex.md) - Buy REX using staked tokens
|
||||
- [sellrex](system-rex-sellrex.md) - Sell REX tokens
|
||||
- [cancelrexorder](system-rex-cancelrexorder.md) - Cancel queued REX sell order if one exists
|
||||
- [mvtosavings](system-rex-mvtosavings.md) - Move REX tokens to savings bucket
|
||||
- [mvfromsavings](system-rex-mvfromsavings.md) - Move REX tokens out of savings bucket
|
||||
- [rentcpu](system-rex-rentcpu.md) - Rent CPU bandwidth for 30 days
|
||||
- [rentnet](system-rex-rentnet.md) - Rent Network bandwidth for 30 days
|
||||
- [fundcpuloan](system-rex-fundcpuloan.md) - Deposit into a CPU loan fund
|
||||
- [fundnetloan](system-rex-fundnetloan.md) - Deposit into a Network loan fund
|
||||
- [defundcpuloan](system-rex-defundcpuloan.md) - Withdraw from a CPU loan fund
|
||||
- [defundnetloan](system-rex-defundnetloan.md) - Withdraw from a Network loan fund
|
||||
- [consolidate](system-rex-consolidate.md) - Consolidate REX maturity buckets into one that matures in 4 days
|
||||
- [updaterex](system-rex-updaterex.md) - Update REX owner vote stake and vote weight
|
||||
- [rexexec](system-rex-rexexec.md) - Perform REX maintenance by processing expired loans and unfilled sell orders
|
||||
- [closerex](system-rex-closerex.md) - Delete unused REX-related user table entries
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
## Subcommands
|
||||
- [voteproducer proxy](system-voteproducer-proxy) - Vote your stake through a proxy
|
||||
- [voteproducer prods](system-voteproducer-prods) - Vote for one or more producers
|
||||
- [voteproducer approve](system-voteproducer-approve) -Add one producer to list of voted producers
|
||||
- [voteproducer unapprove](system-voteproducer-unapprove) - Remove one producer from list of voted producers
|
||||
- [voteproducer proxy](system-voteproducer-proxy.md) - Vote your stake through a proxy
|
||||
- [voteproducer prods](system-voteproducer-prods.md) - Vote for one or more producers
|
||||
- [voteproducer approve](system-voteproducer-approve.md) -Add one producer to list of voted producers
|
||||
- [voteproducer unapprove](system-voteproducer-unapprove.md) - Remove one producer from list of voted producers
|
||||
|
||||
@@ -9,7 +9,7 @@ cleos version
|
||||
```
|
||||
|
||||
## Subcommands
|
||||
[client](client) - Retrieve version information of the client
|
||||
[client](client.md) - Retrieve version information of the client
|
||||
|
||||
```sh
|
||||
cleos version client
|
||||
|
||||
@@ -8,7 +8,7 @@ content_title: Cleos
|
||||
|
||||
## Installation
|
||||
|
||||
`cleos` is distributed as part of the [EOSIO software suite](https://github.com/EOSIO/eos/blob/master/README.md). To install `cleos` just visit the [EOSIO Software Installation](../00_install/index.md) section.
|
||||
`cleos` is distributed as part of the [EOSIO software suite](https://github.com/eosnetworkfoundation/mandel). To install `cleos` just visit the [EOSIO Software Installation](../00_install/index.md) section.
|
||||
|
||||
## Using Cleos
|
||||
|
||||
|
||||
@@ -91,11 +91,6 @@ Config Options for eosio::wallet_plugin:
|
||||
number of seconds of inactivity.
|
||||
Activity is defined as any wallet
|
||||
command e.g. list-wallets.
|
||||
--yubihsm-url URL Override default URL of
|
||||
http://localhost:12345 for connecting
|
||||
to yubihsm-connector
|
||||
--yubihsm-authkey key_num Enables YubiHSM support using given
|
||||
Authkey
|
||||
|
||||
Application Config Options:
|
||||
--plugin arg Plugin(s) to enable, may be specified
|
||||
|
||||
@@ -21,7 +21,10 @@ None
|
||||
|
||||
## Dependencies
|
||||
|
||||
* [`http_plugin`](../http_plugin/index.md)
|
||||
* `http_plugin`
|
||||
|
||||
[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN )
|
||||
[//]: # ( `http_plugin` ../http_plugin.md )
|
||||
|
||||
### Load Dependency Examples
|
||||
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
---
|
||||
content_title: How To Attach a YubiHSM Hard Wallet
|
||||
link_text: How To Attach a YubiHSM Hard Wallet
|
||||
---
|
||||
|
||||
## Goal
|
||||
|
||||
Attach a YubiHSM as a hard wallet
|
||||
|
||||
## Before you begin
|
||||
|
||||
* Install the currently supported version of `keosd`
|
||||
|
||||
* Install YubiHSM2 Software Toolkit (YubiHSM2 SDK)
|
||||
|
||||
* Create an AuthKey with at least the following Capabilities:
|
||||
|
||||
* sign-ecdsa
|
||||
* generate-asymmetric-key
|
||||
* export-wrapped
|
||||
|
||||
* **Delete the default AuthKey**
|
||||
|
||||
[[warning | Security]]
|
||||
| It is extremely important to create a new AuthKey and remove the default AuthKey before proceed to the following steps.
|
||||
|
||||
## Steps
|
||||
|
||||
### Configure `keosd`
|
||||
|
||||
There are two options to connect `keosd` to YubiHSM:
|
||||
|
||||
#### Using a YubiHSM connector
|
||||
|
||||
By default, `keosd` will connect to the YubiHSM connector on the default host and port. If a non-default URL is used, set the `--yubihsm-url` option or `yubihsm-url` in `config.ini` with the correct connector URL
|
||||
|
||||
#### Directly connect via USB
|
||||
|
||||
`keosd` also can directly connect to YubiHSM via USB protocol
|
||||
|
||||
If this option is used, set `keosd` startup option as the below:
|
||||
|
||||
```sh
|
||||
--yubihsm-url=ysb://
|
||||
```
|
||||
|
||||
### Start `keosd` with AuthKey:
|
||||
|
||||
```sh
|
||||
--yubihsm-authkey Your_AuthKey_Object_Number
|
||||
```
|
||||
|
||||
if a YubiHSM connector is used, check the YubiHSM connector is up and running by visiting YubiHSM URL:
|
||||
http://YubiHSM_HOST:YubiHSM_PORT/connector/status ((Default HOST and Port: http://127.0.0.1:12345)
|
||||
|
||||
You should see something like this:
|
||||
|
||||
```console
|
||||
status=OK
|
||||
serial=*
|
||||
version=2.0.0
|
||||
pid=666
|
||||
address=localhost
|
||||
port=12345
|
||||
```
|
||||
|
||||
### Unlock YubiHSM wallet with the password of AuthKey using the following option:
|
||||
|
||||
```sh
|
||||
cleos wallet unlock -n YubiHSM --password YOUR_AUTHKEY_PASSWORD
|
||||
```
|
||||
|
||||
After unlocking the wallet, you can use `cleos wallet` commands as usual. Beware as a part of security mechanism, some wallet subcommands, such as retrieve private keys, or remove a key, are not supported when a YubiHSM is used
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
content_title: Keosd How-to Guides
|
||||
---
|
||||
|
||||
* [How to attach a YubiHSM hard wallet](how-to-attach-a-yubihsm-hard-wallet.md)
|
||||
@@ -8,7 +8,7 @@ content_title: Keosd
|
||||
|
||||
## Installation
|
||||
|
||||
`keosd` is distributed as part of the [EOSIO software suite](https://github.com/EOSIO/eos/blob/master/README.md). To install `keosd` just visit the [EOSIO Software Installation](../00_install/index.md) section.
|
||||
`keosd` is distributed as part of the [EOSIO software suite](https://github.com/eosnetworkfoundation/mandel). To install `keosd` just visit the [EOSIO Software Installation](../00_install/index.md) section.
|
||||
|
||||
## Operation
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
---
|
||||
link: /20_upgrade-guide/index.md
|
||||
---
|
||||
@@ -1,132 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO 1.8 Consensus Protocol Upgrade Process
|
||||
---
|
||||
|
||||
This guide is intended to instruct node operators on the steps needed to successfully transition an EOSIO network through a consensus protocol upgrade (also known as a "hard fork") with minimal disruption to users.
|
||||
|
||||
## Test networks
|
||||
|
||||
Before deploying the upgrade to any non-test networks, protocol upgrades should be deployed and verified on test networks. The version of nodeos supporting the initial set of protocol upgrades is [v1.8.1](https://github.com/EOSIO/eos/releases/tag/v1.8.1). Existing EOSIO-based test networks can use this version of nodeos to carry out and test the upgrade process.
|
||||
|
||||
This test upgrade process can give block producers of their respective EOSIO blockchain networks practice with carrying out the steps necessary to successfully coordinate the activation of the first consensus protocol upgrade feature (or just protocol feature for short), which will fork out any nodes that have not yet updated to the new version of nodeos by the time of activation. The process will also inform block producers of the requirements for nodes to upgrade nodeos to v1.8 from v1.7 and earlier, and it can help them decide an appropriate deadline to be given as notice to the community for when the first protocol feature will be activated.
|
||||
|
||||
Testing the upgrade process on test networks will also allow block explorers and other applications interacting with the blockchain to test the transition and the behavior of their applications under the new rules after activation of the individual protocol features. Some of the protocol features (`PREACTIVATE_FEATURE` and `NO_DUPLICATE_DEFERRED_ID` as examples) make slight changes to the block and transaction data structures, and therefore force applications that are reliant on the old structure to migrate. One of the protocol features (`RESTRICT_ACTION_TO_SELF`) restricts an existing authorization bypass (which has been deprecated since the v1.5.1 release of EOSIO) and could potentially break smart contracts that continue to rely on that authorization bypass.
|
||||
|
||||
## Upgrade process for all EOSIO networks (including test networks)
|
||||
|
||||
Because these steps require replay from genesis, after the release of [v1.8.1](https://github.com/EOSIO/eos/releases/tag/v1.8.1) of nodeos which supports the initial set of consensus protocol upgrades, all node operators should take the following steps as soon as possible. These steps should be followed on an additional node that they can afford to be taken offline for an extended period of time:
|
||||
|
||||
1. Ensure that their existing node is running the most recent stable release (1.7) of nodeos and then shut down nodeos.
|
||||
2. Make a backup and delete the `blocks/reversible` directory, `state-history` directory, and `state` directory within the data directory.
|
||||
3. Replace their old version of nodeos with the new release.
|
||||
4. Start the new 1.8 release of nodeos and let it complete replay from genesis and catch up with syncing with the network. The node should receive blocks and LIB should advance. Nodes running v1.8 and v1.7 will continue to coexist in the same network prior to the activation of the first protocol upgrade feature.
|
||||
|
||||
A replay from genesis is required when upgrading nodeos from v1.7 to v1.8. Afterward, the v1.8 node can, as usual, start and stop quickly without requiring replays. The state directory generated by a v1.7 node will not be compatible with v1.8 of nodeos. Version 1 portable snapshots (generated by v1.7) will not be compatible with v1.8 which require the version 2 portable snapshots.
|
||||
|
||||
Due to the long amount of time it will take to replay from genesis (even longer if running with plugins that track history), block producers of the network are suggested to provide sufficient time to the community to upgrade their nodes prior to activating the first protocol upgrade feature.
|
||||
|
||||
Nodes that wish to make the transition but are not interested in tracking the history of the chain from genesis have an option to speed things up by using a version 2 portable snapshots that can be generated by synced v1.8 nodes. Since the portable snapshots are generated in a deterministic and portable manner, users can simply compare the hash of the snapshot files they downloaded from an arbitrary source to the hashes published by a variety of trusted sources, but only if they correspond to snapshots taken at the same block ID.
|
||||
|
||||
### Special notes to block producers
|
||||
|
||||
Block producers will obviously need to run the replay of nodeos on a separate machine that is not producing blocks. This machine will have to be production ready so that they can switch block production over to it when it has finished replaying and syncing. Alternatively, they can take a portable snapshot on the replay machine and move it to yet another machine which is production ready, then activate the switch over from their currently producing v1.7 BP node to the v1.8 node.
|
||||
|
||||
Nearly all of the protocol upgrade features introduced in v1.8 first require a special protocol feature (codename `PREACTIVATE_FEATURE`) to be activated and for an updated version of the system contract that utilizes the functionality introduced by that feature to be deployed. Block producers should be aware that as soon as the `PREACTIVATE_FEATURE` protocol feature is activated by the BPs, all nodes still on v1.7 will be unable to continue syncing normally and their last irreversible block will stop advancing. For this reason, it is important to coordinate when the activation happens and announce the expected activation date with sufficient time provided to the community to upgrade their nodes in time.
|
||||
|
||||
After activation of the `PREACTIVATE_FEATURE` and deployment of the updated system contract, block producers will be able to more easily coordinate activation of further protocol features. For the remaining protocol features in the v1.8 release, they can activate the features at any time and no preparation time needs to be given to the community since anyone synced up with the blockchain at that time will necessarily be on a version of nodeos that is at least v1.8 and therefore will support the entire initial set of protocol features. Furthermore, due to the `PREACTIVATE_FEATURE` protocol feature, they can activate the other remaining protocol features with an `eosio.msig` proposed transaction using the `activate` action in the new system contract and no replay is required.
|
||||
|
||||
The activation of the first protocol feature, `PREACTIVATE_FEATURE`, however cannot be done with an `eosio.msig` proposed transaction. It will require more coordination and manual action by the block producers. First, block producers should come to an agreement on the earliest time that they are willing to activate the first protocol feature.
|
||||
|
||||
The BPs should then set this chosen time in the configuration JSON file for the `PREACTIVATE_FEATURE` protocol upgrade of their v1.8 node. Specifically, they should modify the value for the `earliest_allowed_activation_time` field in the `protocol_features/BUILTIN-PREACTIVATE_FEATURE.json` file located in the config directory.
|
||||
|
||||
It is important that this configuration change happens prior to allowing that node to produce blocks on the network. As long as more than two-thirds of the active block producers have set the same future time in the configuration file for the `PREACTIVATE_FEATURE` on their BP nodes, the network will be safe from any attempts at premature activation by some other active BP.
|
||||
|
||||
After the agreed upon time has passed, any of the active block producers can activate the `PREACTIVATE_FEATURE` protocol feature with a simple request sent to the [`producer_api_plugin`](../01_nodeos/03_plugins/producer_api_plugin/index.md) of their BP node.
|
||||
|
||||
To determine the specific format of the request, the digest of the `PREACTIVATE_FEATURE` protocol feature must first be determined. This can be found by looking at nodeos startup logs, or by sending a request to the `get_supported_protocol_features` endpoint provided by the [`producer_api_plugin`](../01_nodeos/03_plugins/producer_api_plugin/index.md).
|
||||
|
||||
Send a request to the endpoint locally:
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:8888/v1/producer/get_supported_protocol_features -d '{}' | jq
|
||||
```
|
||||
|
||||
In the returned array, find an object that references the `PREACTIVATE_FEATURE` codename, for example:
|
||||
|
||||
```
|
||||
...
|
||||
{
|
||||
"feature_digest": "0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd",
|
||||
"subjective_restrictions": {
|
||||
"enabled": true,
|
||||
"preactivation_required": false,
|
||||
"earliest_allowed_activation_time": "1970-01-01T00:00:00.000"
|
||||
},
|
||||
"description_digest": "64fe7df32e9b86be2b296b3f81dfd527f84e82b98e363bc97e40bc7a83733310",
|
||||
"dependencies": [],
|
||||
"protocol_feature_type": "builtin",
|
||||
"specification": [
|
||||
{
|
||||
"name": "builtin_feature_codename",
|
||||
"value": "PREACTIVATE_FEATURE"
|
||||
}
|
||||
]
|
||||
},
|
||||
...
|
||||
```
|
||||
|
||||
In this case, the digest of the `PREACTIVATE_FEATURE` protocol feature is `0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd` (note that the values may be different depending on the local changes made to the configuration of the protocol features that are specific to the blockchain network).
|
||||
|
||||
Then, the local block producing nodeos instance can be requested to activate the `PREACTIVATE_FEATURE` protocol at its earliest opportunity (i.e. the next time that node produces a block) using the following command:
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:8888/v1/producer/schedule_protocol_feature_activations -d '{"protocol_features_to_activate": ["0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd"]}' | jq
|
||||
```
|
||||
|
||||
The above command should only be used after the time has passed the agreed upon `earliest_allowed_activation_time` for the `PREACTIVATE_FEATURE` protocol feature.
|
||||
|
||||
Any synced v1.8.x nodes can be used to check which protocol features have been activated using the following command:
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:8888/v1/chain/get_activated_protocol_features -d '{}' | jq
|
||||
```
|
||||
|
||||
For example, if the `PREACTIVATE_FEATURE` protocol feature is activated, that command may return a result such as (specific values, especially the `activation_block_num`, may vary):
|
||||
|
||||
```
|
||||
{
|
||||
"activated_protocol_features": [
|
||||
{
|
||||
"feature_digest": "0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd",
|
||||
"activation_ordinal": 0,
|
||||
"activation_block_num": 348,
|
||||
"description_digest": "64fe7df32e9b86be2b296b3f81dfd527f84e82b98e363bc97e40bc7a83733310",
|
||||
"dependencies": [],
|
||||
"protocol_feature_type": "builtin",
|
||||
"specification": [
|
||||
{
|
||||
"name": "builtin_feature_codename",
|
||||
"value": "PREACTIVATE_FEATURE"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Once the `PREACTIVATE_FEATURE` protocol feature has been activated, the [new system contract](https://github.com/EOSIO/eosio.contracts/releases/tag/v1.7.0) with the `activate` action can be deployed.
|
||||
|
||||
## Notes for block explorers, exchanges, and applications
|
||||
|
||||
Block explorers, exchanges, and applications building on the blockchain can all follow the four-step processes described above to upgrade their nodes in time and ensure their services continue when the first protocol upgrade is activated. However, they should also be aware that certain protocol features change the behavior of existing operations on the blockchain, and in some cases also slightly change the structure of blocks and transactions.
|
||||
|
||||
|
||||
**First**, v1.8 changes the structure of transaction traces, even prior to the activation of any protocol features. Clients consuming transaction and action traces made available through [`history_plugin`](../01_nodeos/03_plugins/history_plugin/index.md), `mongo_db_plugin`, or [`state_history_plugin`](../01_nodeos/03_plugins/state_history_plugin/index.md) should be aware of the changes made to the trace structure (see details at [#7044](https://github.com/EOSIO/eos/pull/7044) and [#7108](https://github.com/EOSIO/eos/pull/7108)). Clients consuming the trace output of the `push_transaction` RPC from the chain API should not need to do anything since the output of that RPC should be backwards compatible. However, they are encouraged to replace usage of `push_transaction` with the new RPC [`send_transaction`](https://developers.eos.io/eosio-nodeos/reference#send_transaction) which uses the new flat structure to store the action traces.
|
||||
|
||||
The [`state_history_plugin`](../01_nodeos/03_plugins/state_history_plugin/index.md) has also changed its API and the structure of the files it stores on disk in a backwards incompatible way in v1.8. These changes reflect, among other things, the transaction trace structural changes and the data structure changes made within the chain state database to support the new protocol features. Consumers of the [`state_history_plugin`](../01_nodeos/03_plugins/state_history_plugin/index.md) will need to be updated to work with the new changes in v1.8.
|
||||
|
||||
**Second**, all protocol features are activated by signaling their 256-bit digest through a block. The block producer is able to place the digest of a protocol feature in a special section of the block header (called the block header extensions) that, under the original rules of v1.7, is expected to be empty. This change may especially be relevant to block explorers which need to ensure that their tools will not break because of the extra data included in the block header and ideally will update their block explorers to reflect the new information. The first time block explorers or other consumers of the blockchain data will encounter a non-empty block header extension is during the activation of the `PREACTIVATE_FEATURE` protocol feature.
|
||||
|
||||
**Third**, upon activation of the `NO_DUPLICATE_DEFERRED_ID` protocol feature, contract-generated deferred transactions will include a non-empty `transaction_extensions` field. While block explorers may be interested in exposing the contents of this field in a user-friendly way, clients are free to ignore it. However, for code dealing with the binary serialized form of these transactions directly, they must be capable of successfully deserializing the transaction with the extension data present. Note that this also applies to smart contract code that may be reading the deferred transaction that caused it to execute, whether it is because it is executing an action within the deferred transaction or executing the `eosio::onerror` notification handler of the contract that sent the (failed) deferred transaction.
|
||||
|
||||
**Fourth**, activation of the `RESTRICT_ACTION_TO_SELF` protocol feature will remove the authorization bypass that is available when a contract sends an inline action to itself (this authorization bypass was deprecated in the v1.5.1 release of EOSIO). Smart contract developers should ensure their contracts do not rely on this authorization bypass prior to the time the block producers activate the `RESTRICT_ACTION_TO_SELF` protocol feature, otherwise, their contracts may stop functioning correctly.
|
||||
@@ -1,52 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO 2.0 Upgrade Guide
|
||||
---
|
||||
|
||||
This section contains important instructions for node operators and other EOSIO stakeholders to transition an EOSIO network successfully through an EOSIO version or protocol upgrade.
|
||||
|
||||
## Consensus Protocol Upgrades
|
||||
EOSIO v2.0.x introduces two new consensus protocol upgrade features (or just protocol features for short):
|
||||
|
||||
1. `WEBAUTHN_KEY`: Adds support for WebAuthn keys and signatures ([#7421](https://github.com/EOSIO/eos/pull/7421))
|
||||
2. `WTMSIG_BLOCK_SIGNATURES`: Adds support for weighted threshold multi-signature (WTMsig) authorities for block production ([#7404](https://github.com/EOSIO/eos/pull/7404), [#8002](https://github.com/EOSIO/eos/pull/8002), [#8021](https://github.com/EOSIO/eos/pull/8021))
|
||||
|
||||
Both of these features require activation through the privileged `preactivate_feature` intrinsic. This is typically facilitated by executing the `eosio::activate` system contract action (requires system contract [v1.7.0](https://github.com/EOSIO/eosio.contracts/releases/tag/v1.7.0) or later) via the `eosio.msig` contract after getting supermajority block producer approval. However, while these protocol features can be activated through coordination of the block producers alone, **it is still critical to give sufficient time for all nodes to upgrade to v2.0.x before activating any of the above two protocol features**. Activation of any of these two protocol features will immediately fork out any nodes that do not support the protocol features (e.g. any nodes running a version of nodeos earlier than v2.0.x).
|
||||
|
||||
Both of the above protocol features only add new behavior to the EOSIO blockchain. They are not expected to change existing behavior in a significant way that would cause existing contracts to break. Existing applications and block explorers are also unlikely to break upon activation of these protocol features. However, these new features enable new data structures to be utilized on-chain which applications and especially block explorers need to be prepared to handle. For example, activation of the `WEBAUTHN_KEY` protocol feature means that an `eosio::newaccount` or `eosio::updateauth` action could now include WebAuthn public keys as part of the provided `authority`. So, an application dealing with these actions (e.g. a general authenticator for EOSIO transactions) will need to be prepared to support the serialization of WebAuthn public keys appearing in a place where a `public_key` ABI type is expected. Another example is how the activation of the `WTMSIG_BLOCK_SIGNATURES` protocol feature causes the `new_producers` field of a block header to always remain empty, even when a proposed producer schedule gets promoted to pending; upon activation of the `WTMSIG_BLOCK_SIGNATURES` protocol feature, the pending schedule data is instead stored (when present) within the `header_extensions` of the block header. So, block explorers expecting to show these pending producer schedules to users will need to update their code accordingly. As usual, test networks provide a great environment to try existing contracts, applications, services, etc. with the changes of the above protocol features to determine what breaks and what needs to be updated.
|
||||
|
||||
For more details on the `WEBAUTH_KEY` protocol feature, see the section titled [WebAuthn Support](#webauthn-support-7421). For more details on the `WTMSIG_BLOCK_SIGNATURES` protocol feature, see the section titled [Weighted Threshold Multi-signature (WTMsig) Block Signing Authorities](#weighted-threshold-multi-signature-block-signing-authorities-7403).
|
||||
|
||||
### WebAuthn Support ([#7421](https://github.com/EOSIO/eos/pull/7421))
|
||||
WebAuthn support within EOSIO is now available for developers to begin testing WebAuthn based transaction signing in their EOSIO applications. Private EOSIO chains can [start](https://github.com/EOSIO/eosio-webauthn-example-app) using WebAuthn based signatures with this release. We also anticipate releasing additional demos which will attempt to outline how Dapp authors can leverage WebAuthn for contract actions meriting higher levels of security as a second factor authorization mechanism.
|
||||
|
||||
### Weighted Threshold Multi-Signature Block Signing Authorities ([#7403](https://github.com/EOSIO/eos/issues/7403))
|
||||
Block producers must be able to provide high availability for their core service of running the blockchain (aka producing blocks). A common approach to achieve this is redundant infrastructure that efficiently maintains block production, in the event of a hardware malfunction or networking issues. Weighted Threshold Multi-Signature Block Production is the first of many features that seek to provide block producers with a complete high availability solution.
|
||||
|
||||
Current consensus rules require exactly one cryptographic block signing key per block producer. This key, whether stored on disk and loaded via software or protected with a hardware wallet, represents a single-point-of-failure for the operations of a block producer. If that key is lost or access to the hardware module that contains it is temporarily unavailable, the block producer has no choice but to drop blocks, impacting the whole network’s throughput.
|
||||
|
||||
To improve the security and scalability of block production, weighted threshold multi-signature (WTMsig) block signing authorities provides a permission layer that allows for multiple block signing keys in a flexible scheme that will enable redundant block signing infrastructure to exist without sharing any sensitive data.
|
||||
|
||||
An updated version of the system contract is required to enable block producers to use WTMsig block signing authorities. Version [v1.9.0-rc1](https://github.com/EOSIO/eosio.contracts/releases/tag/v1.9.0-rc1) of eosio.contracts adds a new `regproducer2` action to the eosio.system contract which enables a block producer candidate to register a WTMsig block signing authority. (That version of the system contract can only be deployed on an EOSIO chain that has activated the `WTMSIG_BLOCK_SIGNATURES` protocol feature.) More details are available at: [#7404](https://github.com/EOSIO/eos/pull/7404), [#8002](https://github.com/EOSIO/eos/pull/8002), [#8021](https://github.com/EOSIO/eos/pull/8021).
|
||||
|
||||
## Upgrading from previous versions of EOSIO
|
||||
|
||||
EOSIO v2.0.x has made changes to the state database that prevent it from working with existing state databases in v1.8.x and earlier. So upgrading from earlier versions of EOSIO requires importing the state from a portable snapshot.
|
||||
|
||||
Furthermore, the changes to the state database necessitate a version bump in the portable snapshots generated by EOSIO v2.0.x from v2 to v3. However, unlike the upgrade of portable snapshot versions in EOSIO v1.8.x from v1 to v2, EOSIO v2.0.x is able to import v2 portable snapshots. This means that it is not necessary to replay the blockchain from genesis to upgrade from EOSIO v1.8.x to v2.0.x. (One exception is if the operator of the node is using the deprecated history_plugin and wishes to preserve that history.)
|
||||
|
||||
Finally, EOSIO v2.0.x has also upgraded the version of the irreversible blocks log to v3. However, older versions of the blocks log are still supported, so there is no need to do anything special to handle existing blocks log files.
|
||||
|
||||
### Upgrading from v1.8.x
|
||||
|
||||
If the node uses the deprecated history_plugin (and the operator of the node wishes to preserve this history), the only option to upgrade is to replay the blockchain from genesis.
|
||||
|
||||
Users of the state_history_plugin (SHiP) do not need to replay from genesis because the state history logs are portable and contain versioned data structures within. However, upgrading a node that uses state history without a full replay means that the state history log will contain a mix of versions for any upgrade types. For example, the changes in v2.0.x modify the `global_property_object` in the database state and so the state history log could contain a `global_property_object_v0` type (for the part of the history before the local node upgrade) and a `global_property_object_v1` type (for the part of the history after the local node upgrade). This should not cause problems for any history fillers that have been updated to support both versions of the type. However, operators should be aware that this can lead to the log file contents being slightly different across different nodes even if they all start and stop at the same blocks and have not enabled `trace-history-debug-mode`. (Replaying a v2.0.x node with state_history_plugin enabled from genesis would guarantee that the state history logs do not contain the `global_property_object_v0` type.)
|
||||
|
||||
The following instructions should be followed to upgrade nodeos from v1.8.x to v2.0.x without a full replay (after making appropriate backup copies):
|
||||
1. Obtain a compatible portable snapshot of the state. A v2 or v3 portable snapshot can be downloaded from a trusted source. Alternatively, one can use an existing v1.8.x node to generate a v2 portable snapshot by launching nodeos with `--read-mode=irreversible --plugin=eosio::producer_api_plugin` command-line options and then using the `/v1/producer/create_snapshot` RPC endpoint to generate a portable snapshot (e.g. run the command `curl -X POST http:/127.0.0.1:8888/v1/producer/create_snapshot -d '{}' | jq`).
|
||||
2. Shut down nodeos and delete the `blocks/reversible` and `state` sub-directories within the data directory.
|
||||
3. Launch nodeos v2.0.x from the generated snapshot using the `--snapshot` command line option and give it time to import the snapshot while starting up (this could take several minutes). (Subsequent launches of nodeos should not use the `--snapshot` option.)
|
||||
|
||||
### Upgrading from v2.0.0-rc1, v2.0.0-rc2, or v2.0.0-rc3
|
||||
|
||||
Node operators should consider upgrading v2.0.0-rc1, v2.0.0-rc2, and v2.0.0-rc3 nodes to v2.0.0 as soon as possible. They can follow normal upgrade procedures for the upgrade. There should be no need to do a replay or import from a snapshot.
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
link: /30_release-notes/index.md
|
||||
link_text: v2.0.12
|
||||
---
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.11 Release Notes
|
||||
link_text: v2.0.11
|
||||
---
|
||||
|
||||
This release contains security and miscellaneous fixes.
|
||||
|
||||
## Security bug fixes
|
||||
|
||||
### Consolidated Security Fixes for v2.0.11 ([#10147](https://github.com/EOSIO/eos/pull/10147))
|
||||
- Fix issue with account query db that could result in incorrect data or hung processes
|
||||
|
||||
Note: These security fixes are relevant to all nodes on EOSIO blockchain networks.
|
||||
|
||||
## Other changes
|
||||
- ([#10063](https://github.com/EOSIO/eos/pull/10063)) [release 2.0.x] Fix docker steps on tagged builds.
|
||||
- ([#10135](https://github.com/EOSIO/eos/pull/10135)) Wlb/adding nodeos param tests 2.0.x
|
||||
- ([#10133](https://github.com/EOSIO/eos/pull/10133)) fix compiling with boost 1.76; add <set> include in chainbase - 2.0
|
||||
|
||||
## Documentation
|
||||
- ([#10094](https://github.com/EOSIO/eos/pull/10094)) [docs] Add EOSIO 2.0.10 release notes to dev portal - 2.0
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.10 Release Notes
|
||||
link_text: v2.0.10
|
||||
---
|
||||
|
||||
This release contains security, stability, and miscellaneous fixes.
|
||||
|
||||
## Security bug fixes
|
||||
|
||||
### Consolidated Security Fixes for v2.0.10 ([#10091](https://github.com/EOSIO/eos/pull/10091))
|
||||
- Fix issue with account query db that could result in incorrect data or hung processes
|
||||
- Implement a Subjective CPU billing system that helps P2P and API nodes better respond to extreme network congestion
|
||||
|
||||
Note: These security fixes are relevant to all nodes on EOSIO blockchain networks.
|
||||
|
||||
### Notes on Subjective CPU Billing
|
||||
|
||||
This system consists of two primary features: a subjective (node local) view of spent CPU resources that are not yet accounted for by the blockchain that allows individual nodes to predict what resource consumption will be and, a subjective penalty system to offset work done in service of erroneous or malicious transactions.
|
||||
|
||||
The subjective view of CPU resources will synchronize with the resources present in the blockchain as it discovers the true CPU billing for transactions it has already accounted for.
|
||||
|
||||
The system will also accumulate CPU resources spent on failing transactions that will not be relayed in a decaying "subjective penalty" which can protect the individual nodes from abusive actors while remaining tolerant to occasional mistakes.
|
||||
|
||||
Subjective billing defaults to active and can be disabled with the `disable-subjective-billing` configuration in `config.ini` or on the command line.
|
||||
|
||||
## Stability bug fixes
|
||||
- ([#9985](https://github.com/EOSIO/eos/pull/9985)) EPE-389 net_plugin stall during head catchup - merge release/2.0.x
|
||||
|
||||
## Other changes
|
||||
- ([#9894](https://github.com/EOSIO/eos/pull/9894)) EOS VM OC: Support LLVM 11 - 2.0
|
||||
- ([#9911](https://github.com/EOSIO/eos/pull/9911)) add step to the pipeline to build and push to dockerhub on release br…
|
||||
- ([#9944](https://github.com/EOSIO/eos/pull/9944)) Create eosio-debug-build Pipeline
|
||||
- ([#9969](https://github.com/EOSIO/eos/pull/9969)) Updating name for the new Docker hub repo EOSIO instead EOS
|
||||
- ([#9971](https://github.com/EOSIO/eos/pull/9971)) Fix pinned builds error due to obsolete LLVM repo
|
||||
- ([#10015](https://github.com/EOSIO/eos/pull/10015)) [release 2.0.x] Fix LRT triggers
|
||||
- ([#10026](https://github.com/EOSIO/eos/pull/10026)) EPE-165: Improve logic for unlinkable blocks while sync'ing
|
||||
- ([#10047](https://github.com/EOSIO/eos/pull/10047)) Reduce Docker Hub Manifest Queries
|
||||
- ([#10088](https://github.com/EOSIO/eos/pull/10088)) [release 2.0.x] Specify boost version for unpinned MacOS 10.14 builds
|
||||
|
||||
## Documentation
|
||||
- ([#10011](https://github.com/EOSIO/eos/pull/10011)) [docs] Update various cleos how-tos and fix index - 2.0
|
||||
@@ -1,17 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.9 Release Notes
|
||||
link_text: v2.0.9
|
||||
---
|
||||
|
||||
This release contains security and miscellaneous fixes.
|
||||
|
||||
## Security bug fixes
|
||||
|
||||
### Consolidated Security Fixes for 2.0.9 ([#9841](https://github.com/EOSIO/eos/pull/9841))
|
||||
- Fixes to packed_transaction cache
|
||||
- Transaction account fail limit refactor
|
||||
|
||||
Note: These security fixes are relevant to all nodes on EOSIO blockchain networks.
|
||||
|
||||
## Other Changes
|
||||
- ([#9803](https://github.com/EOSIO/eos/pull/9803)) Fix stdout console logging: Merge back #9582 to 2.0.x
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.8 Release Notes
|
||||
link_text: v2.0.8
|
||||
---
|
||||
|
||||
This release contains security, stability, and miscellaneous fixes.
|
||||
|
||||
## Security bug fixes
|
||||
|
||||
### Consolidated Security Fixes for 2.0.8 ([#9745](https://github.com/EOSIO/eos/pull/9745))
|
||||
|
||||
- Adjust eos-vm-oc string intrinsic to perform as intended.
|
||||
- Adjust CPU validation logic for unapplied transactions.
|
||||
|
||||
Note: These security fixes are relevant to all nodes on EOSIO blockchain networks.
|
||||
|
||||
## Stability bug fixes
|
||||
- ([#9370](https://github.com/EOSIO/eos/pull/9370)) set medium priority for process signed block - 2.0.x
|
||||
- ([#9382](https://github.com/EOSIO/eos/pull/9382)) Handle case newaccount in Account Query DB
|
||||
- ([#9412](https://github.com/EOSIO/eos/pull/9412)) port the fix of flight bytes bug into release/2.0.x
|
||||
- ([#9423](https://github.com/EOSIO/eos/pull/9423)) Update to fc with variant blob fix - 2.0
|
||||
- ([#9441](https://github.com/EOSIO/eos/pull/9441)) Fix app() shutdown - 2.0
|
||||
- ([#9516](https://github.com/EOSIO/eos/pull/9516)) Keep http_plugin_impl alive while connection objects are alive - 2.0
|
||||
- ([#9624](https://github.com/EOSIO/eos/pull/9624)) Fixing typos on injected params for `producer_plugin::log_failed_tran…
|
||||
|
||||
## Other Changes
|
||||
- ([#9304](https://github.com/EOSIO/eos/pull/9304)) relaxing the on_notify constraint to *
|
||||
- ([#9311](https://github.com/EOSIO/eos/pull/9311)) Track Source Files Excluded from Code Coverage Reports
|
||||
- ([#9314](https://github.com/EOSIO/eos/pull/9314)) Prevent an older version of g++ to build eosio
|
||||
- ([#9334](https://github.com/EOSIO/eos/pull/9334)) Add missing comma in loggers array
|
||||
- ([#9399](https://github.com/EOSIO/eos/pull/9399)) [2.0.x] Fix docker tags when building forked PRs
|
||||
- ([#9638](https://github.com/EOSIO/eos/pull/9638)) Migrate CI from Docker Hub to Amazon ECR
|
||||
- ([#9657](https://github.com/EOSIO/eos/pull/9657)) CI: Fix Serial Test Bug + Simplification + UX
|
||||
- ([#9665](https://github.com/EOSIO/eos/pull/9665)) Add "Testing Changes" Section to Pull Request Template
|
||||
|
||||
## Documentation
|
||||
- ([#9323](https://github.com/EOSIO/eos/pull/9323)) [docs] Remove unneeded options for nodeos replays - 2.0
|
||||
- ([#9322](https://github.com/EOSIO/eos/pull/9322)) [docs] Remove redundant nodeos replay example - 2.0
|
||||
- ([#9373](https://github.com/EOSIO/eos/pull/9373)) [docs] Fix broken link in Wallet API plugin - 2.0
|
||||
- ([#9464](https://github.com/EOSIO/eos/pull/9464)) [docs] Create nodeos concepts folder and rearrange folders - 2.0
|
||||
- ([#9479](https://github.com/EOSIO/eos/pull/9479)) [docs] Add explainers on CFD, eosio utilities, eosio-blocklog - 2.0
|
||||
- ([#9487](https://github.com/EOSIO/eos/pull/9487)) [docs] Minor edits on CFD explainer and eosio-blocklog reference - 2.0
|
||||
- ([#9488](https://github.com/EOSIO/eos/pull/9488)) [docs] Fix how-tos for delegating cpu/net with cleos - 2.0
|
||||
- ([#9491](https://github.com/EOSIO/eos/pull/9491)) [docs] Add EOSIO upgrade guide 2.0 to dev portal
|
||||
- ([#9492](https://github.com/EOSIO/eos/pull/9492)) Add explicit left nav link for eosio 2.0 upgrade guide - 2.0
|
||||
- ([#9496](https://github.com/EOSIO/eos/pull/9496)) [docs] Add eosio 2.0 release notes to dev portal - 2.0
|
||||
- ([#9498](https://github.com/EOSIO/eos/pull/9498)) [docs] Add trace_api_util reference to eosio utilities docs - 2.0
|
||||
- ([#9503](https://github.com/EOSIO/eos/pull/9503)) [docs] Add slices, trace log, clog format explainers to Trace API plugin - 2.0
|
||||
- ([#9584](https://github.com/EOSIO/eos/pull/9584)) [docs] Update cleos get table reference - 2.0
|
||||
- ([#9592](https://github.com/EOSIO/eos/pull/9592)) [docs] Various additions/fixes to cleos reference - 2.0
|
||||
- ([#9602](https://github.com/EOSIO/eos/pull/9602)) [docs] Fix broken anchor link on MacOS build from source - 2.0
|
||||
- ([#9627](https://github.com/EOSIO/eos/pull/9627)) [docs] Update get_table_* reference in Chain API - 2.0
|
||||
- ([#9753](https://github.com/EOSIO/eos/pull/9753)) [docs] Update URL in net_api_plugin description - 2.0
|
||||
- ([#9754](https://github.com/EOSIO/eos/pull/9754)) [docs] Update some chain_api_plugin descriptions - 2.0
|
||||
- ([#9756](https://github.com/EOSIO/eos/pull/9756)) [docs] Remove sudo command from install/uninstall script instructions - 2.0
|
||||
|
||||
## Thanks!
|
||||
Special thanks to the community contributors that submitted patches for this release:
|
||||
- @nsjames
|
||||
@@ -1,30 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.7 Release Notes
|
||||
link_text: v2.0.7
|
||||
---
|
||||
|
||||
This release contains stability and miscellaneous fixes.
|
||||
|
||||
## Stability bug fixes
|
||||
- ([#9223](https://github.com/EOSIO/eos/pull/9223)) Fix log of pending block producer - 2.0
|
||||
|
||||
## Changes
|
||||
|
||||
### The following logger has been added: `transaction_failure_tracing`. ([#9252](https://github.com/EOSIO/eos/pull/9252))
|
||||
|
||||
A detailed log that emits failed verdicts from relay nodes on the P2P network. In addition, it adds a logging statement for a failed signature condition.
|
||||
|
||||
### New config file option: `max-nonprivileged-inline-action-size`. ([#9262](https://github.com/EOSIO/eos/pull/9262))
|
||||
|
||||
This option is the cap for the size of an inline action above which a transaction will subjectively fail; the default value is 4KB.
|
||||
|
||||
## Other Changes
|
||||
- ([#9170](https://github.com/EOSIO/eos/pull/9170)) Fix onblock trace tracking - 2.0
|
||||
- ([#9201](https://github.com/EOSIO/eos/pull/9201)) [2.0.x] Anka version bump
|
||||
- ([#9265](https://github.com/EOSIO/eos/pull/9265)) Remove Concurrency Groups for Scheduled Builds
|
||||
|
||||
## Documentation
|
||||
- ([#9124](https://github.com/EOSIO/eos/pull/9124)) Update the authority example
|
||||
- ([#9275](https://github.com/EOSIO/eos/pull/9275)) [docs] New threshold for non privileged inline actions - 2.0
|
||||
- ([#9288](https://github.com/EOSIO/eos/pull/9288)) [docs] Fix character formatting in nodeos CLI option - 2.0
|
||||
- ([#9290](https://github.com/EOSIO/eos/pull/9290)) [docs] Correct Producer API title in RPC reference - 2.0
|
||||
@@ -1,74 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.6 Release Notes
|
||||
link_text: v2.0.6
|
||||
---
|
||||
|
||||
This release contains security, stability, and miscellaneous fixes.
|
||||
|
||||
## Security bug fixes
|
||||
|
||||
- ([#9172](https://github.com/EOSIO/eos/pull/9172)) Escape Unicode C1 control code points.
|
||||
|
||||
Note: These security fixes are relevant to API nodes on EOSIO blockchain networks.
|
||||
|
||||
## Stability bug fixes
|
||||
|
||||
- ([#9065](https://github.com/EOSIO/eos/pull/9065)) Fix for cleos and keosd race condition - 2.0
|
||||
- ([#9089](https://github.com/EOSIO/eos/pull/9089)) make ship WA key serialization match expected serialization - 2.0
|
||||
- ([#9095](https://github.com/EOSIO/eos/pull/9095)) fix gcc10 build due to libyubihsm problem - 2.0
|
||||
- ([#9127](https://github.com/EOSIO/eos/pull/9127)) Fix onblock handling in trace_api_plugin - 2.0
|
||||
- ([#9129](https://github.com/EOSIO/eos/pull/9129)) GCC 8.3 on CentOS 7 compiler workaround - 2.0
|
||||
- ([#9128](https://github.com/EOSIO/eos/pull/9128)) Restore abi_serializer backward compatibility - 2.0
|
||||
|
||||
## Changes
|
||||
|
||||
### Add more information in trace-api-plugin responses for better usage. ([#9005](https://github.com/EOSIO/eos/pull/9005))
|
||||
|
||||
Adds `transaction_mroot`, `action_mroot` and `schedule_version` in block trace. Also adds `status`, `cpu_usage_us`, `net_usage_words`, `signatures`, and `transaction_header` in transaction trace.
|
||||
|
||||
### New RPC endpoint **`get_accounts_by_authorizers`** ([#8899](https://github.com/EOSIO/eos/pull/8899))
|
||||
|
||||
New optional RPC endpoint **`POST /v1/chain/get_accounts_by_authorizers`** added to `chain_api_plugin` that provides a super-set of the deprecated `history_api_plugin`'s `get_key_accounts` and `get_controlled_accounts` RPC methods.
|
||||
|
||||
Flag to enable endpoint (default false): **`--enable-account-queries`**
|
||||
|
||||
## Other Changes
|
||||
|
||||
- ([#8975](https://github.com/EOSIO/eos/pull/8975)) failing nodeos_run_test when core symbol is not SYS - 2.0
|
||||
- ([#9002](https://github.com/EOSIO/eos/pull/9002)) Support Triggering a Build that Runs ALL Tests in One Build
|
||||
- ([#9007](https://github.com/EOSIO/eos/pull/9007)) Improved reporting in nodeos_forked_chain_lr_test - 2.0.x
|
||||
- ([#9013](https://github.com/EOSIO/eos/pull/9013)) Bugfix for uninitialized variable in cleos - 2.0
|
||||
- ([#9009](https://github.com/EOSIO/eos/pull/9009)) Upgrade CLI11 to 1.9.0 - 2.0
|
||||
- ([#9028](https://github.com/EOSIO/eos/pull/9028)) Fix keosd auto-launching after CLI11 upgrade - 2.0
|
||||
- ([#9035](https://github.com/EOSIO/eos/pull/9035)) For Release 2.0 - Updated the priority of the APIs in producer_api_plugin and net_api_plugin to MEDIUM_HIGH
|
||||
- ([#9049](https://github.com/EOSIO/eos/pull/9049)) add rapidjson license to install - 2.0
|
||||
- ([#9052](https://github.com/EOSIO/eos/pull/9052)) Print stderr if keosd_auto_launch_test.py fails - 2.0
|
||||
- ([#9060](https://github.com/EOSIO/eos/pull/9060)) Fix uninitialized struct members used as CLI flags - 2.0
|
||||
- ([#9062](https://github.com/EOSIO/eos/pull/9062)) Fix timedelta and strftime usage - 2.0
|
||||
- ([#9078](https://github.com/EOSIO/eos/pull/9078)) Update date in LICENSE - 2.0
|
||||
- ([#9063](https://github.com/EOSIO/eos/pull/9063)) add help text to wasm-runtime - 2.0.x
|
||||
- ([#9084](https://github.com/EOSIO/eos/pull/9084)) Add support for specifing a logging.json to keosd - 2.0
|
||||
- ([#9082](https://github.com/EOSIO/eos/pull/9082)) Add change type to pull request template - 2.0
|
||||
- ([#8899](https://github.com/EOSIO/eos/pull/8899)) Account Query DB : Proposal to maintain get_(key|controlled)_accounts [2.0]
|
||||
- ([#9103](https://github.com/EOSIO/eos/pull/9103)) Add default contract name clarifier in how to deploy smart contract - 2.0
|
||||
- ([#9109](https://github.com/EOSIO/eos/pull/9109)) [2.0.x] Bump Anka plugin version and timeouts.
|
||||
- ([#9115](https://github.com/EOSIO/eos/pull/9115)) Simplify create_snapshot POST request - 2.0
|
||||
- ([#9110](https://github.com/EOSIO/eos/pull/9110)) Update algorithm for determining number of parallel jobs - 2.0
|
||||
|
||||
## Documentation
|
||||
|
||||
- ([#8980](https://github.com/EOSIO/eos/pull/8980)) Add nodeos RPC API index, improve nodeos implementation doc, fix link - 2.0
|
||||
- ([#8995](https://github.com/EOSIO/eos/pull/8995)) Update example logging.json - 2.0
|
||||
- ([#9102](https://github.com/EOSIO/eos/pull/9102)) Fix inaccurate nodeos reference in wallet_api_plugin - 2.0
|
||||
- ([#9116](https://github.com/EOSIO/eos/pull/9116)) Replace inaccurate wording in how to replay from snapshot - 2.0
|
||||
- ([#9113](https://github.com/EOSIO/eos/pull/9113)) Add trace_api logger to docs - 2.0
|
||||
- ([#9142](https://github.com/EOSIO/eos/pull/9142)) Add missing reference to RPC API index [docs] - 2.0
|
||||
- ([#9141](https://github.com/EOSIO/eos/pull/9141)) Fix Trace API reference request/response inaccuracies [docs] - 2.0
|
||||
- ([#9144](https://github.com/EOSIO/eos/pull/9144)) Fix title case issue in keosd how-to [docs] - 2.0
|
||||
- ([#9145](https://github.com/EOSIO/eos/pull/9145)) Add conditional step in state history plugin how-to [docs] - 2.0
|
||||
|
||||
## Thanks!
|
||||
|
||||
Special thanks to the community contributors that submitted patches for this release:
|
||||
- @cc32d9
|
||||
- @oldcold
|
||||
@@ -1,65 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.5 Release Notes
|
||||
link_text: v2.0.5
|
||||
---
|
||||
|
||||
This release contains security, stability, and miscellaneous fixes.
|
||||
|
||||
## Security bug fixes
|
||||
|
||||
### Consolidated Security Fixes for 2.0.5 ([#8983](https://github.com/EOSIO/eos/pull/8983))
|
||||
|
||||
- EOS-VM security fixes
|
||||
|
||||
Note: These security fixes are relevant to all nodes on EOSIO blockchain networks.
|
||||
|
||||
## Stability bug fixes
|
||||
|
||||
- ([#8826](https://github.com/EOSIO/eos/pull/8826)) trace_api_plugin yield timeout - 2.0
|
||||
- ([#8836](https://github.com/EOSIO/eos/pull/8836)) fix potential leak in OC's wrapped_fd move assignment op - 2.0
|
||||
|
||||
## Changes
|
||||
|
||||
### Trace API Compressed Data Log Support ([#8826](https://github.com/EOSIO/eos/pull/8826), [#8837](https://github.com/EOSIO/eos/pull/8837), [#8881](https://github.com/EOSIO/eos/pull/8881))
|
||||
|
||||
Compressed file support was added to `trace_api_plugin`. See ([#8837](https://github.com/EOSIO/eos/pull/8837)) for more details.
|
||||
|
||||
The RPC call `v1/trace_api/get_block` now has "async" http support. Therefore, executing `get_block` no longer runs on the main application thread but on the configurable `http-threads` thread pool.
|
||||
|
||||
Additionally, `trace_api_plugin` now respects `http-max-response-time-ms` for limiting response time of RPC call `v1/trace_api/get_block`. It is very likely that the default value of `http-max-response-time-ms` will not be appropriate for large blocks and will need to be increased.
|
||||
|
||||
## Other Changes
|
||||
|
||||
- ([#8822](https://github.com/EOSIO/eos/pull/8822)) Merge minimize logging changes to 2.0.x
|
||||
- ([#8823](https://github.com/EOSIO/eos/pull/8823)) yield_function for abi_serializer - 2.0
|
||||
- ([#8855](https://github.com/EOSIO/eos/pull/8855)) Improve too many bytes in flight error info - 2.0
|
||||
- ([#8861](https://github.com/EOSIO/eos/pull/8861)) HTTP Plugin async APIs [2.0]
|
||||
- ([#8873](https://github.com/EOSIO/eos/pull/8873)) Fix spurious HTTP related test failure [2.0] (round 3)
|
||||
- ([#8883](https://github.com/EOSIO/eos/pull/8883)) wabt: don't search for python because we don't run tests - 2.0
|
||||
- ([#8884](https://github.com/EOSIO/eos/pull/8884)) Correctly Sanitize git Branch and Tag Names
|
||||
- ([#8894](https://github.com/EOSIO/eos/pull/8894)) Increase get info priority to medium high
|
||||
- ([#8889](https://github.com/EOSIO/eos/pull/8889)) Sync from snapshot - 2.0
|
||||
- ([#8906](https://github.com/EOSIO/eos/pull/8906)) Remove assert check for error code 400 - release 2.0.x
|
||||
- ([#8944](https://github.com/EOSIO/eos/pull/8944)) noop change to macos-10.14-unpinned.sh to regen CI image, 2.0
|
||||
- ([#8941](https://github.com/EOSIO/eos/pull/8941)) replace boost::bind with std::bind, fixing boost 1.73beta builds - 2.0
|
||||
- ([#8954](https://github.com/EOSIO/eos/pull/8954)) llvm 10 support for EOS VM OC - 2.0
|
||||
- ([#8949](https://github.com/EOSIO/eos/pull/8949)) Replace bc with shell arithmetic - 2.0
|
||||
- ([#8962](https://github.com/EOSIO/eos/pull/8962)) tests/get_table_tests.cpp: incorrect use of CORE_SYM_STR - 2.0
|
||||
- ([#8963](https://github.com/EOSIO/eos/pull/8963)) Make /bin/df ignore $BLOCKSIZE - 2.0
|
||||
- ([#8952](https://github.com/EOSIO/eos/pull/8952)) Fix SHIP block delay - 2.0
|
||||
- ([#8972](https://github.com/EOSIO/eos/pull/8972)) Add possibility to run .cicd scripts from different environments (2.0.x Backport)
|
||||
- ([#8968](https://github.com/EOSIO/eos/pull/8968)) Support Running ALL Tests in One Build
|
||||
|
||||
## Documentation changes
|
||||
|
||||
- ([#8825](https://github.com/EOSIO/eos/pull/8825)) remove leading $ chars from shell codeblocks in README.md - 2.0
|
||||
- ([#8835](https://github.com/EOSIO/eos/pull/8835)) Trace API documentation update - 2.0
|
||||
- ([#8843](https://github.com/EOSIO/eos/pull/8843)) Fix double titles for release 2.0.x
|
||||
- ([#8845](https://github.com/EOSIO/eos/pull/8845)) [docs] trace api reference api correction - 2.0
|
||||
- ([#8918](https://github.com/EOSIO/eos/pull/8918)) Updates to manual build instructions - 2.0
|
||||
|
||||
## Thanks!
|
||||
|
||||
Special thanks to the community contributors that submitted patches for this release:
|
||||
- @cc32d9
|
||||
- @maoueh
|
||||
@@ -1,88 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.4 Release Notes
|
||||
link_text: v2.0.4
|
||||
---
|
||||
|
||||
This release contains stability and miscellaneous fixes.
|
||||
|
||||
## Deprecation Notices
|
||||
|
||||
The `read-only` option for the `read-mode` parameter in `nodeos` has been deprecated. It is possible to achieve the same behavior with `read-mode = head`, `p2p-accept-transactions = false`, and `api-accept-transactions = false`. See the sub-section "Accept transactions options" below for more details.
|
||||
|
||||
Please refer to the [Consolidated EOSIO Deprecations List](https://github.com/EOSIO/eos/issues/7597) for the currently active set of deprecation notices.
|
||||
|
||||
## Stability bug fixes
|
||||
|
||||
- ([#8684](https://github.com/EOSIO/eos/pull/8684)) Net plugin sync priority - 2.0
|
||||
- ([#8729](https://github.com/EOSIO/eos/pull/8729)) Get info priority - 2.0
|
||||
|
||||
## Changes
|
||||
|
||||
### Trace API Plugin ([#8800](https://github.com/EOSIO/eos/pull/8800))
|
||||
|
||||
This release contains the first official release of the Trace API Plugin. This plugin is an optional addition to `nodeos` that stores a tailored view of the transactions and actions that execute on the chain retrievable at a block level. The Trace API focuses on operational maintainability storing data on the filesystem instead of in RAM like the deprecated `history-plugin` and organizing that data such that operators can easily prune old data without disrupting operations.
|
||||
|
||||
For more information, see the PR notes and the official documentation.
|
||||
|
||||
### Exit transaction early when there is insufficient account CPU ([#8638](https://github.com/EOSIO/eos/pull/8638))
|
||||
|
||||
`nodeos` no longer considers a transaction for inclusion in a block in the process of being produced if the billed account(s) do not have sufficient CPU available to cover the previously estimated CPU usage of the transaction (only if a previous estimate for CPU usage is available).
|
||||
|
||||
### Produce block immediately if resource limits are exhausted ([#8651](https://github.com/EOSIO/eos/pull/8651), [#8673](https://github.com/EOSIO/eos/pull/8673))
|
||||
|
||||
`nodeos` now immediately produces a block if either the CPU or NET usage thresholds are exceeded. This change includes a fix for dropping late blocks starting 50ms earlier than the block production window.
|
||||
|
||||
New options:
|
||||
* `max-block-cpu-usage-threshold-us`:
|
||||
Threshold (in microseconds) of CPU block production to consider block full; when accumulated CPU usage within a block is less than `max-block-cpu-usage-threshold-us` away from `max-block-cpu-usage`, the block can be produced immediately. Default value is 5000.
|
||||
* `max-block-net-usage-threshold-bytes`:
|
||||
Threshold (in bytes) of NET block production to consider block full; when accumulated NET usage within a block is less than `max-block-net-usage-threshold-us` away from `max-block-net-usage`, the block can be produced immediately. Default value is 1024.
|
||||
|
||||
### Accept transactions options ([#8702](https://github.com/EOSIO/eos/pull/8702))
|
||||
|
||||
New options:
|
||||
* `p2p-accept-transactions`: Allow transactions received over p2p
|
||||
network to be evaluated and relayed if valid. Default is true.
|
||||
* `api-accept-transactions`: Allow API transactions to be evaluated
|
||||
and relayed if valid. Default is true.
|
||||
|
||||
Provides ability to have a `read-mode = head` with `p2p-accept-transactions = false` and `api-accept-transactions = true`. This combination creates an efficient API node that is not burdened with processing P2P transactions.
|
||||
|
||||
The same behavior of the now deprecated `read-mode = read-only` can be achieved with `read-mode = head` by setting `p2p-accept-transactions = false` and `api-accept-transactions = false`.
|
||||
|
||||
**WARNING:** Use of `read-mode = irreversible` now requires setting `p2p-accept-transactions = false` and `api-accept-transactions = false` to avoid assertion at startup.
|
||||
|
||||
### Relay block early ([#8701](https://github.com/EOSIO/eos/pull/8701))
|
||||
|
||||
Improve block relaying performance when a block is from a trusted producer or if `nodeos` is running in light validation mode. This is achieved by relaying the block as soon as block header validation is complete (but before full block application/validation).
|
||||
|
||||
## Other Changes
|
||||
|
||||
- ([#8654](https://github.com/EOSIO/eos/pull/8654)) Fix format message. - 2.0
|
||||
- ([#8668](https://github.com/EOSIO/eos/pull/8668)) Add troubleshooting item for PREACTIVATE_FEATURE protocol
|
||||
- ([#8689](https://github.com/EOSIO/eos/pull/8689)) incoming-defer-ratio description - 2.0
|
||||
- ([#8695](https://github.com/EOSIO/eos/pull/8695)) [2.0.x] Community PR tweaks.
|
||||
- ([#8700](https://github.com/EOSIO/eos/pull/8700)) [2.0.x] Base images pipeline.
|
||||
- ([#8714](https://github.com/EOSIO/eos/pull/8714)) [2.0.x] Actions rerun fixes.
|
||||
- ([#8710](https://github.com/EOSIO/eos/pull/8710)) Add block producing explainer doc - 2.0
|
||||
- ([#8721](https://github.com/EOSIO/eos/pull/8721)) Fix multiple version protocol test intermittent failure - 2.0
|
||||
- ([#8727](https://github.com/EOSIO/eos/pull/8727)) Update the getting started link [merge 2]
|
||||
- ([#8752](https://github.com/EOSIO/eos/pull/8752)) chain_api_plugin swagger file - 2.0
|
||||
- ([#8756](https://github.com/EOSIO/eos/pull/8756)) Fixes #8600 clean up nodeos options section
|
||||
- ([#8757](https://github.com/EOSIO/eos/pull/8757)) link cleos net status reference doc with the peer network protocol doc
|
||||
- ([#8590](https://github.com/EOSIO/eos/pull/8590)) db_size_api_plugin swagger file - 2.0
|
||||
- ([#8591](https://github.com/EOSIO/eos/pull/8591)) net_api_plugin swagger file - 2.0
|
||||
- ([#8592](https://github.com/EOSIO/eos/pull/8592)) producer_api_plugin swagger file - 2.0
|
||||
- ([#8593](https://github.com/EOSIO/eos/pull/8593)) test_control_api_plugin swagger file - 2.0
|
||||
- ([#8754](https://github.com/EOSIO/eos/pull/8754)) swagger configuration for docs - 2.0
|
||||
- ([#8762](https://github.com/EOSIO/eos/pull/8762)) Fix broken link in producer plugin docs - 2.0
|
||||
- ([#8763](https://github.com/EOSIO/eos/pull/8763)) Fix wasm-runtime option parameters - 2.0
|
||||
- ([#8765](https://github.com/EOSIO/eos/pull/8765)) Add Incoming-defer-ratio description - 2.0
|
||||
- ([#8767](https://github.com/EOSIO/eos/pull/8767)) Fix other blocks.log callout - 2.0
|
||||
- ([#8768](https://github.com/EOSIO/eos/pull/8768)) Improve create account description - 2.0
|
||||
- ([#8782](https://github.com/EOSIO/eos/pull/8782)) link to librt when using posix timers - 2.0
|
||||
- ([#8781](https://github.com/EOSIO/eos/pull/8781)) free unknown EOS VM OC codegen versions from the code cache - 2.0
|
||||
- ([#8794](https://github.com/EOSIO/eos/pull/8794)) disable EOS VM on non-x86 platforms - 2.0
|
||||
- ([#8803](https://github.com/EOSIO/eos/pull/8803)) Expire blacklisted scheduled transactions by LIB time - 2.0
|
||||
- ([#8811](https://github.com/EOSIO/eos/pull/8811)) Add initial Trace API plugin docs to nodeos - 2.0
|
||||
- ([#8814](https://github.com/EOSIO/eos/pull/8814)) Add RPC Trace API plugin reference to nodeos - 2.0
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.3 Release Notes
|
||||
link_text: v2.0.3
|
||||
---
|
||||
|
||||
This release contains security, stability, and miscellaneous fixes.
|
||||
|
||||
## Security bug fixes
|
||||
|
||||
### Consolidated Security Fixes for 2.0.3 ([#8643](https://github.com/EOSIO/eos/pull/8643))
|
||||
|
||||
- Add deadline to base58 encoding.
|
||||
|
||||
Note: These security fixes are relevant to all nodes on EOSIO blockchain networks.
|
||||
|
||||
## Stability bug fixes
|
||||
|
||||
- ([#8617](https://github.com/EOSIO/eos/pull/8617)) Init net_plugin member variables - 2.0
|
||||
|
||||
## Other Changes
|
||||
|
||||
- ([#8606](https://github.com/EOSIO/eos/pull/8606)) Skip sync from genesis and resume from state test on tagged builds
|
||||
- ([#8612](https://github.com/EOSIO/eos/pull/8612)) [2.0.x] Actions for community PRs.
|
||||
- ([#8633](https://github.com/EOSIO/eos/pull/8633)) remove brew's python@2 install - 2.0
|
||||
- ([#8636](https://github.com/EOSIO/eos/pull/8636)) bump script's macos version check to 10.14 - 2.0
|
||||
|
||||
## Deprecation notice reminder
|
||||
|
||||
Please refer to the [Consolidated EOSIO Deprecations List](https://github.com/EOSIO/eos/issues/7597) for the currently active set of deprecation notices.
|
||||
@@ -1,46 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.2 Release Notes
|
||||
link_text: v2.0.2
|
||||
---
|
||||
|
||||
This release contains security, stability, and miscellaneous fixes.
|
||||
|
||||
## Security bug fixes
|
||||
|
||||
### Consolidated Security Fixes for 2.0.2 ([#8595](https://github.com/EOSIO/eos/pull/8595))
|
||||
|
||||
- Restrict allowed block signature types.
|
||||
|
||||
Note: These security fixes are relevant to all nodes on EOSIO blockchain networks.
|
||||
|
||||
## Stability bug fixes
|
||||
|
||||
- ([#8526](https://github.com/EOSIO/eos/pull/8526)) Handle socket close before async callback - 2.0
|
||||
- ([#8546](https://github.com/EOSIO/eos/pull/8546)) Net plugin dispatch - 2.0
|
||||
- ([#8552](https://github.com/EOSIO/eos/pull/8552)) Net plugin unlinkable blocks - 2.0
|
||||
- ([#8560](https://github.com/EOSIO/eos/pull/8560)) Backport of 8056 to 2.0
|
||||
- ([#8561](https://github.com/EOSIO/eos/pull/8561)) Net plugin post - 2.0
|
||||
- ([#8564](https://github.com/EOSIO/eos/pull/8564)) Delayed production time - 2.0
|
||||
|
||||
## Changes
|
||||
|
||||
### Limit block production window ([#8571](https://github.com/EOSIO/eos/pull/8571), [#8578](https://github.com/EOSIO/eos/pull/8578))
|
||||
|
||||
The new options `cpu-effort-percent` and `last-block-cpu-effort-percent` now provide a mechanism to restrict the amount of time a producer is processing transactions for inclusion into a block. It also controls the time a producer will finalize/produce and transmit a block. Block construction now always begins at whole or half seconds for the next block.
|
||||
|
||||
### Stricter signature parsing
|
||||
|
||||
Versions of EOSIO prior to v2.0.x accept keys and signatures containing extra data at the end. In EOSIO v2.0.x, the Base58 string parser performs additional sanity checks on keys and signatures to make sure they do not contain more data than necessary. These stricter checks cause nodes to reject signatures generated by some transaction signing libraries; eosjs v20 is known to generate proper signatures. For more information see issue [#8534](https://github.com/EOSIO/eos/issues/8534).
|
||||
|
||||
## Other Changes
|
||||
|
||||
- ([#8555](https://github.com/EOSIO/eos/pull/8555)) Drop late check - 2.0
|
||||
- ([#8557](https://github.com/EOSIO/eos/pull/8557)) Read-only with drop-late-block - 2.0
|
||||
- ([#8568](https://github.com/EOSIO/eos/pull/8568)) Timestamp watermark slot - 2.0.x
|
||||
- ([#8577](https://github.com/EOSIO/eos/pull/8577)) [release 2.0.x] Documentation patch 1 update
|
||||
- ([#8583](https://github.com/EOSIO/eos/pull/8583)) P2p read only - 2.0
|
||||
- ([#8589](https://github.com/EOSIO/eos/pull/8589)) Producer plugin log - 2.0
|
||||
|
||||
## Deprecation notice reminder
|
||||
|
||||
Please refer to the [Consolidated EOSIO Deprecations List](https://github.com/EOSIO/eos/issues/7597) for the currently active set of deprecation notices.
|
||||
@@ -1,37 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO v2.0.1 Release Notes
|
||||
link_text: v2.0.1
|
||||
---
|
||||
|
||||
This release contains security, stability, and miscellaneous fixes.
|
||||
|
||||
## Security bug fixes
|
||||
|
||||
### Consolidated Security Fixes for 2.0.1 ([#8514](https://github.com/EOSIO/eos/pull/8514))
|
||||
|
||||
- Earlier block validation for greater security.
|
||||
- Improved handling of deferred transactions during block production.
|
||||
- Reduce net plugin logging and handshake size limits.
|
||||
|
||||
Note: These security fixes are relevant to all nodes on EOSIO blockchain networks.
|
||||
|
||||
## Stability bug fixes
|
||||
|
||||
- ([#8471](https://github.com/EOSIO/eos/pull/8471)) Remove new block id notify feature - 2.0
|
||||
- ([#8472](https://github.com/EOSIO/eos/pull/8472)) Report block header diff when digests do not match - 2.0
|
||||
- ([#8496](https://github.com/EOSIO/eos/pull/8496)) Drop late blocks - 2.0
|
||||
- ([#8510](https://github.com/EOSIO/eos/pull/8510)) http_plugin shutdown - 2.0
|
||||
|
||||
## Other Changes
|
||||
|
||||
- ([#8430](https://github.com/EOSIO/eos/pull/8430)) Update fc to fix crash in logging
|
||||
- ([#8435](https://github.com/EOSIO/eos/pull/8435)) [release/2.0.x] Update README.md and hotfix documentation links
|
||||
- ([#8452](https://github.com/EOSIO/eos/pull/8452)) [2.0.x] [CI/CD] Boost will not install without SDKROOT
|
||||
- ([#8457](https://github.com/EOSIO/eos/pull/8457)) [2.0.x] reverting fc
|
||||
- ([#8458](https://github.com/EOSIO/eos/pull/8458)) [2.0.x] Pipeline file for testing the build script
|
||||
- ([#8467](https://github.com/EOSIO/eos/pull/8467)) [2.0.x] Switching to using the EOSIO fork of anka-buildkite-plugin for security reasons
|
||||
- ([#8515](https://github.com/EOSIO/eos/pull/8515)) [2.0.x] Don't trigger LRT a second time
|
||||
|
||||
## Deprecation notice reminder
|
||||
|
||||
Please refer to the [Consolidated EOSIO Deprecations List](https://github.com/EOSIO/eos/issues/7597) for the currently active set of deprecation notices.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user