bitcoin-s/docs/oracle/oracle-election-example.html
Docusaurus bot 3b9c322843 Deploy website
Deploy website version based on 6f838b03c0
2022-06-27 18:50:39 +00:00

167 lines
No EOL
30 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Election Example · bitcoin-s</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## Requirements for example"/><meta name="docsearch:version" content="1.9.1"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Election Example · bitcoin-s"/><meta property="og:type" content="website"/><meta property="og:url" content="https://bitcoin-s.org/"/><meta property="og:description" content="## Requirements for example"/><meta property="og:image" content="https://bitcoin-s.org/img/undraw_online.svg"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://bitcoin-s.org/img/undraw_tweetstorm.svg"/><link rel="shortcut icon" href="/img/favicon.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61958686-2', 'auto');
ga('send', 'pageview');
</script><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="https://fonts.googleapis.com/css?family=Montserrat:500"></script><script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id=UA-61958686-2"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/favicon.ico" alt="bitcoin-s"/><h2 class="headerTitleWithLogo">bitcoin-s</h2></a><a href="/versions"><h3>1.9.1</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class="siteNavGroupActive"><a href="/docs/core/core-intro" target="_self">Docs</a></li><li class=""><a href="/download" target="_self">Download</a></li><li class=""><a href="/api/org/bitcoins" target="_self">API</a></li><li class=""><a href="/help" target="_self">Help</a></li><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line1"></div><div class="line2"></div><div class="line3"></div></div></div><h2><i></i><span>DLC Oracle</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle">Getting Started</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/getting-started">Intro and Getting Started</a></li><li class="navListItem"><a class="navItem" href="/docs/bips">Supported BIPs</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Getting Setup</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/getting-setup">Getting Bitcoin-S installed on your machine</a></li><li class="navListItem"><a class="navItem" href="/docs/ui-setup">Installing the DLC Wallet UI</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Applications</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/applications/cli">CLI</a></li><li class="navListItem"><a class="navItem" href="/docs/applications/server">Application Server</a></li><li class="navListItem"><a class="navItem" href="/docs/applications/gui">GUI</a></li><li class="navListItem"><a class="navItem" href="/docs/applications/server-systemd">Systemd installation</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Chain</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/chain/chain">Blockchain Verification</a></li><li class="navListItem"><a class="navItem" href="/docs/chain/filter-sync">Syncing Blockfilters</a></li><li class="navListItem"><a class="navItem" href="/docs/chain/chain-query-api">Chain Query API</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Configuration</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/config/configuration">Application Configuration</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Core Module</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/core/core-intro">Core Module</a></li><li class="navListItem"><a class="navItem" href="/docs/core/addresses">Generating Addresses</a></li><li class="navListItem"><a class="navItem" href="/docs/core/hd-keys">HD Key Generation</a></li><li class="navListItem"><a class="navItem" href="/docs/core/adding-spks">Adding New Script Types</a></li><li class="navListItem"><a class="navItem" href="/docs/core/spending-info">Signing Transactions</a></li><li class="navListItem"><a class="navItem" href="/docs/core/psbts">Partially Signed Bitcoin Transactions</a></li><li class="navListItem"><a class="navItem" href="/docs/core/dlc">Discreet Log Contract Data Structures</a></li><li class="navListItem"><a class="navItem" href="/docs/core/txbuilder">TxBuilder Example</a></li><li class="navListItem"><a class="navItem" href="/docs/core/lightning-network">Lightning Network Data Types</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Crypto Module</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/crypto/crypto-intro">Crypto Module</a></li><li class="navListItem"><a class="navItem" href="/docs/crypto/sign">Sign API</a></li><li class="navListItem"><a class="navItem" href="/docs/crypto/adaptor-signatures">Adaptor Signatures</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Fee Provider</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/fee-provider/fee-provider">Fee Provider</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Key Manager</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/key-manager/server-key-manager">Server Key Manager</a></li><li class="navListItem"><a class="navItem" href="/docs/key-manager/key-manager">Key Manager</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Node</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/node/node">Light Client</a></li><li class="navListItem"><a class="navItem" href="/docs/node/node-api">Node API</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Wallet</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/wallet/wallet">Wallet</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/wallet-callbacks">Wallet Callbacks</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/wallet-get-address">Wallet Get Address APIs</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/address-tagging">Address and UTXO tagging</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/dlc">Executing A DLC with Bitcoin-S</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/wallet-rescan">Wallet Rescans</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/wallet-sync">Wallet Sync</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/wallet-rpc">Wallet RPC Examples</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/backups">Wallet Backups</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/wallet-election-example">Wallet Election Example</a></li><li class="navListItem"><a class="navItem" href="/docs/wallet/wallet-price-example">Wallet Price Example</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Tor</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/tor/tor">Tor Setup</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">RPC Clients</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/rpc/rpc-clients-intro">Introduction</a></li><li class="navListItem"><a class="navItem" href="/docs/rpc/rpc-eclair">Eclair</a></li><li class="navListItem"><a class="navItem" href="/docs/rpc/rpc-bitcoind">bitcoind/Bitcoin Core</a></li><li class="navListItem"><a class="navItem" href="/docs/rpc/lnd-rpc">LND</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Secp256k1</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/secp256k1/secp256k1">Secp256k1</a></li><li class="navListItem"><a class="navItem" href="/docs/secp256k1/jni-modify">Adding to Secp256k1 JNI</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Testkit</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/testkit/testkit">Testkit</a></li><li class="navListItem"><a class="navItem" href="/docs/testkit/testkit-core">Testkit Core</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">DLC Oracle</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/oracle/build-oracle-server">Building the Oracle Server</a></li><li class="navListItem"><a class="navItem" href="/docs/oracle/oracle-server">Oracle Server</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/oracle/oracle-election-example">Election Example</a></li><li class="navListItem"><a class="navItem" href="/docs/oracle/oracle-price-example">Price Example</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Oracle Explorer Client</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/oracle-explorer-client/oracle-explorer-client">Oracle Explorer Client</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Contributing</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/contributing">Contributing</a></li><li class="navListItem"><a class="navItem" href="/docs/contributing-website">Contributing to the website</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Security</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/security">Security</a></li></ul></div></div></section></div><script>
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
var links = coll[i].nextElementSibling.getElementsByTagName('*');
if (checkActiveCategory){
for (var j = 0; j < links.length; j++) {
if (links[j].classList.contains('navListItemActive')){
coll[i].nextElementSibling.classList.toggle('hide');
coll[i].childNodes[1].classList.toggle('rotate');
checkActiveCategory = false;
break;
}
}
}
coll[i].addEventListener('click', function() {
var arrow = this.childNodes[1];
arrow.classList.toggle('rotate');
var content = this.nextElementSibling;
content.classList.toggle('hide');
});
}
document.addEventListener('DOMContentLoaded', function() {
createToggler('#navToggler', '#docsNav', 'docsSliderActive');
createToggler('#tocToggler', 'body', 'tocActive');
var headings = document.querySelector('.toc-headings');
headings && headings.addEventListener('click', function(event) {
var el = event.target;
while(el !== headings){
if (el.tagName === 'A') {
document.body.classList.remove('tocActive');
break;
} else{
el = el.parentNode;
}
}
}, false);
function createToggler(togglerSelector, targetSelector, className) {
var toggler = document.querySelector(togglerSelector);
var target = document.querySelector(targetSelector);
if (!toggler) {
return;
}
toggler.onclick = function(event) {
event.preventDefault();
target.classList.toggle(className);
};
}
});
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/bitcoin-s/bitcoin-s/blob/master/docs/oracle/oracle-election-example.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Election Example</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="requirements-for-example"></a><a href="#requirements-for-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Requirements for example</h2>
<p>You need to have a fully built oracle server. You can follow <a href="/docs/oracle/build-oracle-server">this guide</a> to do this.</p>
<p>You will also need a the <code>bitcoin-s-cli</code> command line tool to interact with the server.
You can find how to build this <a href="/docs/applications/cli">here</a></p>
<p>After building the oracle server, you will need to start it with</p>
<pre><code class="hljs">.<span class="hljs-meta-keyword">/app/</span>oracle-server<span class="hljs-meta-keyword">/target/</span>universal<span class="hljs-meta-keyword">/stage/</span>bin/bitcoin-s-oracle-server
</code></pre>
<h2><a class="anchor" aria-hidden="true" id="us-2020-election"></a><a href="#us-2020-election" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>US 2020 Election</h2>
<p>In 2020, the United States held a presidential election.
People want to do a DLC based on the outcome, so you decide to be
their oracle and attest to the winner of the election.</p>
<ol>
<li>Setting up an oracle that can attest to the outcome of the election</li>
<li>Complete the announcement by attesting to the winner of the election</li>
</ol>
<h3><a class="anchor" aria-hidden="true" id="setting-up-the-election-bet"></a><a href="#setting-up-the-election-bet" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Setting up the election bet</h3>
<p>The election bet can be represented by an enumerated announcement. What we mean by this is the outcomes
for this announcement can be simply enumerated in a list. There were three possible outcomes for the election</p>
<ol>
<li>&quot;Republican_win&quot;</li>
<li>&quot;Democrat_win&quot;</li>
<li>&quot;other&quot;</li>
</ol>
<p>The next step is to create an oracle announcement that can be shared with others. This announcement
contains cryptographic information that is used by people that want to enter into DLCs to setup
their bitcoin transactions.</p>
<p>To do this, we need to use the <code>createenumannouncement</code> rpc. This RPC takes 3 parameters</p>
<ol>
<li>The label for the announcement
we will use <code>2020-us-election</code></li>
<li>the maturation time for the announcement in ISO 8061 format
For our example we will use <code>&quot;2021-01-20T00:00:00Z&quot;</code></li>
<li>The outcomes, which we listed above &quot;Republican_win,Democrat_win,other&quot;</li>
</ol>
<p>With all of this information, we can create the announcement with <code>bitcoin-s-cli</code>!</p>
<pre><code class="hljs">./bitcoin-s-cli createenumannouncement <span class="hljs-number">2020</span>-us-election <span class="hljs-string">"2021-01-20T00:00:00Z"</span> <span class="hljs-string">"Republican_win,Democrat_win,other"</span>
fdd<span class="hljs-number">824</span><span class="hljs-keyword">c</span><span class="hljs-number">3988</span>fabec<span class="hljs-number">9820690</span>f<span class="hljs-number">366271</span><span class="hljs-keyword">c</span><span class="hljs-number">9</span>ceac<span class="hljs-number">00</span>fbec<span class="hljs-number">1412075</span>f<span class="hljs-number">9</span>b<span class="hljs-number">319</span>bb<span class="hljs-number">0</span>db<span class="hljs-number">1</span>f<span class="hljs-number">86460519</span>dd<span class="hljs-number">9</span><span class="hljs-keyword">c</span><span class="hljs-number">61478949</span>f<span class="hljs-number">2</span><span class="hljs-keyword">c</span><span class="hljs-number">00</span><span class="hljs-keyword">c</span><span class="hljs-number">35</span>aeb<span class="hljs-number">8e53</span>a<span class="hljs-number">1507616072</span>cb<span class="hljs-number">802891e2</span><span class="hljs-keyword">c</span><span class="hljs-number">189</span>a<span class="hljs-number">9</span>fa<span class="hljs-number">65</span>a<span class="hljs-number">0493</span>de<span class="hljs-number">5</span>d<span class="hljs-number">3</span>b<span class="hljs-number">04</span>a<span class="hljs-number">6</span>d<span class="hljs-number">7</span>b<span class="hljs-number">90</span><span class="hljs-keyword">c</span><span class="hljs-number">9</span><span class="hljs-keyword">c</span><span class="hljs-number">43</span><span class="hljs-keyword">c</span><span class="hljs-number">09</span>ebe<span class="hljs-number">5250</span>d<span class="hljs-number">583e1</span><span class="hljs-keyword">c</span><span class="hljs-number">3</span>fc<span class="hljs-number">423219</span>b<span class="hljs-number">26</span>f<span class="hljs-number">6</span>a<span class="hljs-number">02</span>ec<span class="hljs-number">394</span>a<span class="hljs-number">130000</span>afdd<span class="hljs-number">8225</span>f<span class="hljs-number">0001</span>ae<span class="hljs-number">3e30</span>df<span class="hljs-number">5</span>a<span class="hljs-number">203</span>ad<span class="hljs-number">10</span>ee<span class="hljs-number">89</span>a<span class="hljs-number">909</span>df<span class="hljs-number">0</span><span class="hljs-keyword">c</span><span class="hljs-number">8</span>ccea<span class="hljs-number">4836e94</span>e<span class="hljs-number">0</span>a<span class="hljs-number">5</span>d<span class="hljs-number">34</span><span class="hljs-keyword">c</span><span class="hljs-number">3</span>cdab<span class="hljs-number">758</span>fcaee<span class="hljs-number">1460189600</span>fdd<span class="hljs-number">8062400030e52657075626</span><span class="hljs-keyword">c</span><span class="hljs-number">6963616e5</span>f<span class="hljs-number">77696e0</span><span class="hljs-keyword">c</span><span class="hljs-number">44656</span>d<span class="hljs-number">6</span>f<span class="hljs-number">637261745</span>f<span class="hljs-number">77696e056</span>f<span class="hljs-number">7468657210323032302</span>d<span class="hljs-number">75732</span>d<span class="hljs-number">656</span><span class="hljs-keyword">c</span><span class="hljs-number">656374696</span>f<span class="hljs-number">6</span>e
</code></pre>
<p>Yay! The hex string returned is an oracle announcement.
You can submit this on a tool like the <a href="https://oracle.suredbits.com">Suredbits oracle explorer</a>
so others can find your oracle.</p>
<p>If you are building infrastructure to automatically sign announcements, it is important to store two things</p>
<ol>
<li>The oracle announcement above (<code>fdd824c...</code>)</li>
<li>The timestamp that the announcement matures at (<code>&quot;2021-01-20T00:00:00Z&quot;</code>)</li>
</ol>
<p>Now you can schedule jobs to sign the announcement when the maturation time passes.</p>
<h3><a class="anchor" aria-hidden="true" id="signing-the-outcome-for-the-election-bet"></a><a href="#signing-the-outcome-for-the-election-bet" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Signing the outcome for the election bet</h3>
<p>In the real world, you would want to wait for the maturation time to pass for your announcement.
For the purposes of the demo, we can skip this wait. The winner of the US election was Joe Biden.</p>
<p>Let's sign the announcement.</p>
<pre><code class="hljs"> ./bitcoin-s-cli signenum <span class="hljs-number">2020</span>-us-election Democrat_win
fdd<span class="hljs-number">8688010323032302</span>d<span class="hljs-number">75732</span>d<span class="hljs-number">656</span><span class="hljs-keyword">c</span><span class="hljs-number">656374696</span>f<span class="hljs-number">6</span>ed<span class="hljs-number">3</span>b<span class="hljs-number">04</span>a<span class="hljs-number">6</span>d<span class="hljs-number">7</span>b<span class="hljs-number">90</span><span class="hljs-keyword">c</span><span class="hljs-number">9</span><span class="hljs-keyword">c</span><span class="hljs-number">43</span><span class="hljs-keyword">c</span><span class="hljs-number">09</span>ebe<span class="hljs-number">5250</span>d<span class="hljs-number">583e1</span><span class="hljs-keyword">c</span><span class="hljs-number">3</span>fc<span class="hljs-number">423219</span>b<span class="hljs-number">26</span>f<span class="hljs-number">6</span>a<span class="hljs-number">02</span>ec<span class="hljs-number">394</span>a<span class="hljs-number">130000</span>a<span class="hljs-number">0001</span>ae<span class="hljs-number">3e30</span>df<span class="hljs-number">5</span>a<span class="hljs-number">203</span>ad<span class="hljs-number">10</span>ee<span class="hljs-number">89</span>a<span class="hljs-number">909</span>df<span class="hljs-number">0</span><span class="hljs-keyword">c</span><span class="hljs-number">8</span>ccea<span class="hljs-number">4836e94</span>e<span class="hljs-number">0</span>a<span class="hljs-number">5</span>d<span class="hljs-number">34</span><span class="hljs-keyword">c</span><span class="hljs-number">3</span>cdab<span class="hljs-number">758</span>fcaee<span class="hljs-number">1447</span>a<span class="hljs-number">59</span>ba<span class="hljs-number">58797e55</span>b<span class="hljs-number">967</span>aa<span class="hljs-number">79</span><span class="hljs-keyword">c</span><span class="hljs-number">89</span>ffec<span class="hljs-number">67023578009</span><span class="hljs-keyword">c</span><span class="hljs-number">4</span>dc<span class="hljs-number">1e3</span>dee<span class="hljs-number">2</span>fd<span class="hljs-number">75277993590</span><span class="hljs-keyword">c</span><span class="hljs-number">44656</span>d<span class="hljs-number">6</span>f<span class="hljs-number">637261745</span>f<span class="hljs-number">77696</span>e
</code></pre>
<p>Yay! Now bitcoin-s gives us an attestation that is represented by the hex string <code>fdd868...</code></p>
<p>If you submitted your announcement to the <a href="https://oracle.suredbits.com">suredbits oracle explorer</a> above
you will also want to submit the attestation for your announcement so others can find it and settle their DLCs.</p>
<p>If you use the <code>getannouncement</code> rpc along the oracle announcement, you can see the announcement is now completed!</p>
<pre><code class="hljs"> ./bitcoin-s-cli getannouncement <span class="hljs-number">2020</span>-us-election
{
<span class="hljs-string">"nonces"</span>: [
<span class="hljs-string">"ae3e30df5a203ad10ee89a909df0c8ccea4836e94e0a5d34c3cdab758fcaee14"</span>
],
<span class="hljs-string">"eventName"</span>: <span class="hljs-string">"2020-us-election"</span>,
<span class="hljs-string">"signingVersion"</span>: <span class="hljs-string">"DLCOracleV0SigningVersion"</span>,
<span class="hljs-string">"maturationTime"</span>: <span class="hljs-string">"2021-01-20T00:00:00Z"</span>,
<span class="hljs-string">"announcementSignature"</span>: <span class="hljs-string">"988fabec9820690f366271c9ceac00fbec1412075f9b319bb0db1f86460519dd9c61478949f2c00c35aeb8e53a1507616072cb802891e2c189a9fa65a0493de5"</span>,
<span class="hljs-string">"eventDescriptorTLV"</span>: <span class="hljs-string">"fdd8062400030e52657075626c6963616e5f77696e0c44656d6f637261745f77696e056f74686572"</span>,
<span class="hljs-string">"eventTLV"</span>: <span class="hljs-string">"fdd8225f0001ae3e30df5a203ad10ee89a909df0c8ccea4836e94e0a5d34c3cdab758fcaee1460189600fdd8062400030e52657075626c6963616e5f77696e0c44656d6f637261745f77696e056f7468657210323032302d75732d656c656374696f6e"</span>,
<span class="hljs-string">"announcementTLV"</span>: <span class="hljs-string">"fdd824c3988fabec9820690f366271c9ceac00fbec1412075f9b319bb0db1f86460519dd9c61478949f2c00c35aeb8e53a1507616072cb802891e2c189a9fa65a0493de5d3b04a6d7b90c9c43c09ebe5250d583e1c3fc423219b26f6a02ec394a130000afdd8225f0001ae3e30df5a203ad10ee89a909df0c8ccea4836e94e0a5d34c3cdab758fcaee1460189600fdd8062400030e52657075626c6963616e5f77696e0c44656d6f637261745f77696e056f7468657210323032302d75732d656c656374696f6e"</span>,
<span class="hljs-string">"attestations"</span>: [
<span class="hljs-string">"47a59ba58797e55b967aa79c89ffec67023578009c4dc1e3dee2fd7527799359"</span>
],
<span class="hljs-string">"signatures"</span>: [
<span class="hljs-string">"ae3e30df5a203ad10ee89a909df0c8ccea4836e94e0a5d34c3cdab758fcaee1447a59ba58797e55b967aa79c89ffec67023578009c4dc1e3dee2fd7527799359"</span>
],
<span class="hljs-string">"outcomes"</span>: [
<span class="hljs-string">"Republican_win"</span>,
<span class="hljs-string">"Democrat_win"</span>,
<span class="hljs-string">"other"</span>
],
<span class="hljs-string">"signedOutcome"</span>: <span class="hljs-string">"Democrat_win"</span>
}
</code></pre>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 10/2/2021 by Chris Stewart</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/oracle/oracle-server"><span class="arrow-prev"></span><span>Oracle Server</span></a><a class="docs-next button" href="/docs/oracle/oracle-price-example"><span>Price Example</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#requirements-for-example">Requirements for example</a></li><li><a href="#us-2020-election">US 2020 Election</a><ul class="toc-headings"><li><a href="#setting-up-the-election-bet">Setting up the election bet</a></li><li><a href="#signing-the-outcome-for-the-election-bet">Signing the outcome for the election bet</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/favicon.ico" alt="bitcoin-s" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/en/getting-started">Getting Started</a><a href="/docs/en/core/core-intro">Guides</a><a href="/api/org/bitcoins">API Reference</a></div><div><h5>Community</h5><a href="/en/users.html">User Showcase</a><a href="https://join.slack.com/t/suredbits/shared_invite/zt-eavycu0x-WQL7XOakzQo8tAy7jHHZUw" target="_blank" rel="noreferrer noopener">Slack</a><a href="https://gitter.im/bitcoin-s-core/">Gitter chat</a></div><div><h5>More</h5><a href="https://github.com/bitcoin-s/bitcoin-s">GitHub</a><a class="github-button" href="https://github.com/bitcoin-s/bitcoin-s" data-icon="octicon-star" data-count-href="/bitcoin-s/bitcoin-s-core/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">Star</a></div></section><section class="copyright">Copyright © 2022 Suredbits &amp; the bitcoin-s developers</section></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
}
// keyCode for '/' (slash)
if (e.keyCode === 191) {
const search = document.getElementById('search_input_react');
search && search.focus();
}
});
</script><script>
var search = docsearch({
apiKey: '0a510688bf8448e19aeb380377d328d3',
indexName: 'bitcoin-s',
inputSelector: '#search_input_react'
});
</script></body></html>