Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Key tree signatures #48

Closed
wants to merge 1 commit into from
Closed

Key tree signatures #48

wants to merge 1 commit into from

Conversation

sipa
Copy link
Contributor

@sipa sipa commented Aug 21, 2015

Adds:

  • Generic threshold tree code, and ability to iterate over their allowed combinations and count them.
  • Keytree layer that adds serializable key tree objects (which are threshold trees over public key leaves), and ability to compute their Merkle root and branches in logspace.
  • Human-readable format/parse code for key trees.
  • Signing/ismine code that can cope with key tree outputs.
  • Unit tests for all the above.
  • Wallet/walletdb code to store key trees.
  • RPCs addtreesigaddress and createtreesig.

@gmaxwell
Copy link
Contributor

I'm not sure about this. It has tests. Is that allowed in elements? :P

@sipa
Copy link
Contributor Author

sipa commented Aug 21, 2015

I tried to remain consistent with the existing style which includes some rudimentary tests. Perhaps these were just a leftover from an older codebase and should be removed?


static bool ParseKeyTreeNode(const std::string &s, size_t &pos, KeyTreeNode& tree)
{
while (pos < s.size() && isspace(s[pos])) pos++;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to also have this line at the top of ParseKeyTreeCall and at the top of the while loop in that function. That allows to have whitespace before ( and ,.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whitespace is not very deterministic...

Adds:
* Generic threshold tree code, and ability to iterate over their allowed
  combinations and count them.
* Keytree layer that adds serializable key tree objects (which are
  threshold trees over public key leaves), and ability to compute their
  Merkle root and branches in logspace.
* Human-readable format/parse code for key trees.
* Signing/ismine code that can cope with key tree outputs.
* Unit tests for all the above.
* Wallet/walletdb code to store key trees.
* RPCs addtreesigaddress and createkeysig.
*ret = (int)opcode - (int)(OP_1 - 1);
return true;
} else if (data.size() < 5) {
*ret = CScriptNum(data, false).getint64();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you missing a return true here?

@sipa
Copy link
Contributor Author

sipa commented Feb 2, 2016

Closing; I'd like to use a different implementation, once bitcoin-core/secp256k1#322 is merged.

@sipa sipa closed this Feb 2, 2016
delta1 pushed a commit to delta1/elements that referenced this pull request Apr 28, 2023
0d624261ef Merge bitcoin-core/crc32c-subtree#2: Merge upstream
cac7ca830b Merge commit 'fa5ade41ee480003d9c5af6f43567ba22e4e17e6' into bitcoin-fork
fa5ade41ee Fix compilation warnings on ARM64 with old GCC versions. (ElementsProject#52)
db08d22129 Updated Travis-CI configuration. (ElementsProject#51)
e31619a5b7 Fix GitHub links. (ElementsProject#50)
7fa4c263e8 Update Travis CI config. (ElementsProject#49)
a3d9e6d1a4 Updated third_party/ and Travis CI config. (ElementsProject#48)

git-subtree-dir: src/crc32c
git-subtree-split: 0d624261ef83ab08c953c196540ed18f355add4c
jamesdorfman pushed a commit to jamesdorfman/elements that referenced this pull request May 14, 2023
a44caf65fe Merge bitcoin-core/univalue-subtree#28: Import fixes for sanitizer reported issues
135254331e Import fixes for sanitizer reported issues
d5fb86940e refactor: use c++11 range based for loop in checkObject
ff9c379304 refactor: Use nullptr (c++11) instead of NULL
08a99754d5 build: use ax_cxx_compile_stdcxx.m4 to check for C++11 support
66d3713ce7 Merge bitcoin-core/univalue-subtree#29: ci: travis -> cirrus
808d487292 ci: travis -> cirrus
c390ac375f Merge bitcoin-core/univalue-subtree#19: Split sources for easier buildsystem integration
4a5b0a1c65 build: Move source entries out to sources.mk
6c7d94b33c build: cleanup wonky gen usage
a222637c6d Merge ElementsProject#23: Merge changes from jgarzik/univalue@1ae6a23
f77d0f718d Merge commit '1ae6a231a0169938eb3972c1d48dd17cba5947e1' into HEAD
1ae6a231a0 Merge pull request ElementsProject#57 from MarcoFalke/test_fix
92bdd11f0b univalue_write: remove unneeded sstream.h include
ffb621c130 Merge pull request ElementsProject#56 from drodil/remove_sstream_header
f33acf9fe8 Merge commit '7890db9~' into HEAD
66e0adec4d Remove unnecessary sstream header from univalue.h
88967f6586 Version 1.0.4
1dc113dbef Merge pull request ElementsProject#50 from luke-jr/pushKV_bool
72392fb227 [tests] test pushKV for boolean values
c23132bcf4 Pushing boolean value to univalue correctly
81faab26a1 Merge pull request ElementsProject#48 from fwolfst/47-UPDATE_MIT_LINK_TO_HTTPS
b17634ef24 Update URLs to MIT license.
88ab64f6b5 Merge pull request ElementsProject#46 from jasonbcox/master
35ed96da31 Merge pull request ElementsProject#44 from MarcoFalke/Mf1709-univalue-cherrypick-explicit
420c226290 Merge pull request ElementsProject#45 from MarcoFalke/Mf1710-univalue-revert-test

git-subtree-dir: src/univalue
git-subtree-split: a44caf65fe55b9dd8ddb08f04c0f70409efd53b3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants