<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Obsidian Systems on Medium]]></title>
        <description><![CDATA[Stories by Obsidian Systems on Medium]]></description>
        <link>https://medium.com/@obsidian.systems?source=rss-35293726c369------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*o3j3zslLXMxw0D7-FE3NLA.png</url>
            <title>Stories by Obsidian Systems on Medium</title>
            <link>https://medium.com/@obsidian.systems?source=rss-35293726c369------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 11 Apr 2026 06:08:01 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@obsidian.systems/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[We’ve Moved (on with) Our Obsidian Systems Blog]]></title>
            <link>https://medium.com/@obsidian.systems/weve-moved-on-with-our-obsidian-systems-blog-18608a1f16dd?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/18608a1f16dd</guid>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Fri, 09 Dec 2022 21:51:44 GMT</pubDate>
            <atom:updated>2022-12-09T21:51:44.954Z</atom:updated>
            <content:encoded><![CDATA[<p>Dear Followers, <br>If you want to read more stories about the development of outstanding startup products, innovations from the blockchain universe, and Haskell programming, please visit our new blog: <a href="https://blog.obsidian.systems/">https://blog.obsidian.systems/</a><br>Hope to meet you there!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=18608a1f16dd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Nervos Ledger App: Status Update #2]]></title>
            <link>https://medium.com/@obsidian.systems/nervos-ledger-app-status-update-2-72634aca2c28?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/72634aca2c28</guid>
            <category><![CDATA[nervos]]></category>
            <category><![CDATA[hardware-wallet]]></category>
            <category><![CDATA[proof-of-work]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[ledger]]></category>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Tue, 07 Jul 2020 13:15:27 GMT</pubDate>
            <atom:updated>2020-08-07T17:55:56.791Z</atom:updated>
            <content:encoded><![CDATA[<p>Work is well underway for our second Nervos grant: <a href="https://talk.nervos.org/t/obsidian-systems-hardware-wallet-support-in-ckb-cli-and-additional-ledger-features/4621">Hardware Wallet Support in CKB-CLI and Additional Ledger Features</a>. Here’s an update on the progress that has been made so far!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YnZPRUYwoJ4Y9V5EPalPdw.png" /></figure><h3>Milestone 1 Progress</h3><h4>Done: Storage of Hardware Wallet Root Public Keys in CKB-CLI</h4><p>The account import command can be used to store the extended root public key (m/44&#39;/309&#39;/0&#39;) of a Ledger hardware wallet in CKB-CLI. Here’s the full list of commands we’ve adjusted as part of this shift:</p><ul><li>account import: This subcommand can be used to import the hardware wallet account.</li><li>account list: Once imported, hardware wallet accounts now appear here even when the Ledger device is not connected.</li><li>account extended-address: This subcommand is used to verify your receiving address before sharing it with someone so you are sure the address is correct. Non-default options which were required at the end of our first grant are no longer required.</li><li>account bip44-addresses: This subcommand can now be used to list hardware wallet change and receiving addresses. Currently CKB-CLI prompts the user for their passphrase during this command, but our fork does not and soon <a href="https://github.com/nervosnetwork/ckb-cli/pull/313">neither will CKB-CLI</a>.</li><li>wallet get-capacity --derived: This subcommand can now be used with hardware wallets. Like account bip44-addresses, this command will not prompt the user for their passphrase or device confirmation.</li><li>wallet transfer: While supported at the end of our first grant, this subcommand now uses the hardware wallet information stored in the client. It also knows when to use the default Ledger path m/44&#39;/309&#39;/0&#39;</li><li>DAO Operations: All 3 DAO operations now use hardware wallet stored in the client and will soon use the correct default path of m/44&#39;/309&#39;/0&#39;</li><li>Message Signing Subcommands: sign-message and sign-data subcommands both use hardware wallet data stored in the client. See ‘Message Signing’ below for more details on this feature.</li></ul><h4>Done: Pass Hardware Wallets Unhashed Transaction and Context Data</h4><p>Now that hardware wallet information is being stored in CKB-CLI, we are using this information to clean up UX and make it easier to securely verify operations before signing them. In particular, we are:</p><ul><li>Passing raw transaction data to the hardware wallet. This informs the on-device prompt and is hashed on the device before signing.</li><li>Passing context transactions to the hardware wallet. Context transactions are the transactions that create an operation’s input cells and they are necessary to properly calculate the capacity being transferred in an operation.</li><li>Computing receiving and change addresses using the extended root public key. As a result, the user is no longer prompted to ‘Provide Public Key’ before doing other operations such as a transfer.</li></ul><h4>In Progress: List Multiple Connected Ledger Devices</h4><p>We use <a href="https://github.com/Zondax/ledger-rs">ledger-rs</a> to communicate between the rust client CKB-CLI and Ledger devices. Currently the library does not support listing multiple Ledger devices which are connected with the Nervos app open. We’ll be adding support for this to the library so account list shows all connected devices.</p><h4>In Progress: Message Signing</h4><p>We have completed the work described in our proposal related to message signing! Message signing operations are now prepended with a magic byte to differentiate them from other operations. You can also sign a raw string message with your Ledger device and verify the string on your hardware wallet’s UI! For instance, if you enter the command util sign-message --from-account &lt;lock-arg&gt; --message “Nervos message signing&quot;, the hardware wallet will ask you to ‘Sign Message’ and ask you to verify the exact message you entered: “Nervos message signing”.</p><p>In coordination with the Nervos’ CKB-CLI team, we’ve decided to expand upon this and cover additional use cases, such as messages that are generated from DApps which are formatted differently. In total, we’ll allow signing of three types of messages: raw strings (done), binary hex (not started), and pre-hashed data (not started). We’ve completed specification for these additional features and will be starting work on them soon!</p><p>The spec is as follows:</p><ul><li>To sign a raw string: util sign-data --from-account &lt;lock-arg&gt; --string &lt;string&gt;</li><li>To sign binary hex data: util sign-data --from-account &lt;lock-arg&gt; --binary-hex &lt;binary-hex&gt;</li><li>To sign hashed data: util sign-message --from-account &lt;lock-arg&gt; --message &lt;message&gt;</li></ul><p>Both sign-data and sign-message subcommands will also accept the an extended-address flag to sign with extended addresses, <a href="https://github.com/nervosnetwork/ckb-cli/issues/301">which is not yet supported upstream but will be</a>. sign-data will also support a no-magic-byte flag which will tell the client to not prepend the message with the magic byte, “Nervos Message:”.</p><p>Signing hashed data, or messages that are not prepended with the magic byte, is an advanced use case we don’t recommend for everyday users because the Ledger device cannot determine what it is signing. This is why we’ve put the effort into getting raw transaction data and context transactions sent to the hardware wallet for all common uses: it is necessary to securely display what you are signing. However, this simply isn’t possible in all use cases due to the variance in data that may be produced by DApps or use cases which have not yet emerged. For that reason, we’re also adding a configuration to the Ledger application to ‘Sign Hash’. With this enabled, you can sign hashed data. The hash of that data will appear on the device and in the client for you to confirm. Note that this doesn’t completely make signing hashed data secure! We recommend users confirm the same hash is generated in more than one client to be sure the client is not compromised and thus the hashed data is not malicious.</p><h4>In Progress: Multisig Lock Script Support / Transaction Variants</h4><p>We’ve made good progress towards supporting multisigs in our Ledger application. This is two-fold: both <a href="https://github.com/obsidiansystems/ledger-app-nervos/pull/95">signing operations from a multisig address</a> and <a href="https://github.com/obsidiansystems/ledger-app-nervos/pull/96">sending funds to one</a> since multisig addresses are formatted differently.</p><p>Supporting multisigs is part of a broader initiative to support all the transaction variants someone can reasonably expect to create. After conversations with Nervos’ CKB-CLI team, we’ve decided it is best to support all of them as a part of Milestone 1 to our grant. This includes:</p><ul><li><strong>Multisigs and Timelock addresses: </strong>Timelock addresses essentially are multisig addresses. They can be created with a 1 of 1 signing requirement.</li><li><strong>Transactions with inputs from different addresses: </strong>Transactions created in a JSON file can have inputs from different accounts/addresses, meaning the Ledger device user may not be signing for the entire transaction or the inputs may all be from addresses they own but must each be signed with their respective key. Both of these use cases will be supported.</li><li><strong>Transaction with multiple outputs: </strong>We’ll allow the user to verify each output that’s part of their transaction so they will be able to verify exactly how much CKB is being sent to each destination.</li><li><strong>Self-transfers:</strong> These are a unique case because both the destination and change address are associated with the same account which makes calculating the amount being ‘transferred’ tricky. This can be especially useful for miners looking to consolidate many small cells. <a href="https://github.com/obsidiansystems/ledger-app-nervos/pull/97">Support for this feature was recently completed</a>.</li></ul><p>Supporting all of these variants increases this project’s scope which will take more time than originally estimated, but fits our broad goals of being feature complete before beginning Milestone 2, providing strong security in all use cases, and making Ledger’s security review and listing of our application easier.</p><p>Furthermore, we’ve become very familiar with constructing complex transactions using CKB-CLI and wanted to make it easier for others in the community to do so as well. For that reason, we’ll be publishing a series of guides focusing on the different transaction variants we’ve described above. <a href="https://medium.com/@obsidian.systems/how-to-use-multisigs-with-ckb-cli-5fbd7f4f56e4">The first of which, which covers <strong>Multisigs</strong>, was just published last week</a>!</p><h3>Looking Ahead</h3><p>Everything we’ve described above contributes to the checkpoints which are a part of Milestone 1: 1) Client Changes Complete Natively and 2) Ledger Features Complete. When they are complete, we’ll present progress and produce a video demonstration for the community. At that time we’ll also begin Milestone 2’s checkpoints: 1) Moving Ledger-specific code in CKB-CLI to a plugin and 2) updating LedgerJS to support new features and upstream changes.</p><p>While we haven’t yet begun development of the Ledger plugin, we’ve been actively working with the CKB-CLI team to specify how their plugin system will work with hardware wallet plugins. As a result, <a href="https://github.com/nervosnetwork/ckb-cli/pull/249">they have been able to add the features we’ll need</a> to the plugin system, paving the way for us to make the Ledger plugin during Milestone 2. We’d like to take this opportunity to thank them for their excellent cooperation and support!</p><p>We originally estimated this grant would take up to 8 weeks to complete with the first milestone taking the majority of that time. While we are on track to complete our original specifications within that time frame, the added message signing features and transaction variants will require additional development. As a result, Milestone 1 should be completed near the end of July and Milestone 2 in mid-August. As always, we remain committed to delivering high quality, comprehensive solutions as quickly as we can.</p><h3>Acknowledgements</h3><p>We’d like to thank Nervos for their grant to work on this application and the Nervos community for their enthusiasm surrounding this project!</p><p>If you have any questions or feature requests, we encourage you to email us at nervos@obsidian.systems.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=72634aca2c28" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to use Multisigs with CKB-CLI]]></title>
            <link>https://medium.com/@obsidian.systems/how-to-use-multisigs-with-ckb-cli-5fbd7f4f56e4?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/5fbd7f4f56e4</guid>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Wed, 01 Jul 2020 19:51:56 GMT</pubDate>
            <atom:updated>2020-07-01T19:51:56.982Z</atom:updated>
            <content:encoded><![CDATA[<p>This guide is the first of a series from <a href="https://obsidian.systems/">Obsidian Systems</a> on how to construct different types of transactions with Nervos’ client, <a href="https://github.com/nervosnetwork/ckb-cli">CKB-CLI</a>. Here we’ll cover <strong>multisigs </strong>—<strong> </strong>what they are, how to make them, and how to construct a transfer from them. We’ll also demonstrate a few methods to confirm our transaction succeeded.</p><p>Later in this series we’ll also be publishing guides on topics like timelock addresses and transactions with multiple outputs.</p><p>This guide was made with git hash b2c35a486ec766008acfea778a4d33c87acf2724 of CKB-CLI and is based on this guide for <a href="https://github.com/nervosnetwork/ckb-cli/wiki/Handle-Complex-Transaction">Handling Complex Transactions</a>. Let’s get started!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/476/1*z-aR8wx9WxEW21PLQDCIkQ.png" /><figcaption>Real-world multi-key solutions! (<a href="https://perspective9.blogspot.com/2010/12/7-keyholes-il-lucchetto-ha-7-buchi-ma.html">Photo Credit</a>)</figcaption></figure><h3>About Multisig Addresses</h3><p>A multisig address is a Nervos address that requires the signatures of one or multiple keys based on the requirements established when the address was created. It generally includes all signing schemes that don’t only require a single signature, although that is also possible! For instance, you can require that every signer (ex. 3 of 3) sign for a transaction to be valid. Or, you can set it so only one of many signatures (ex. 1 of 3) is needed to sign a transaction. Or, you can only require a single signature (ex. 1 of 1).</p><p>Let’s look at the command used to create a multisig address to understand these options better:</p><pre><strong>CKB&gt;</strong> tx build-multisig-address --help</pre><pre>tx-build-multisig-address</pre><pre>Build multisig address with multisig config and since(optional) argument</pre><pre>USAGE:<br>     tx build-multisig-address [OPTIONS] --sighash-address &lt;sighash-address&gt;…</pre><pre>FLAGS:<br>     -h, --help Prints help information</pre><pre>OPTIONS:<br>     --sighash-address &lt;sighash-address&gt;… Normal sighash address<br>     --require-first-n &lt;require-first-n&gt; Require first n signatures of corresponding pubkey [default: 0]<br>     --threshold &lt;threshold&gt; Multisig threshold [default: 1]<br>     --since-absolute-epoch &lt;since-absolute-epoch&gt; Since absolute epoch number</pre><p>Looking at the different options we have:</p><ul><li>--sighash-address is where we list any addresses that should be able to sign for this multisig. These can be listed in order separated by a space with as many addresses as we choose.</li><li>--require-first-n sets a requirement that some signatures of the set must sign for the multisig for the signature to be valid. This is most useful when combined with threshold.</li><li>--threshold sets how many of our potential signers (provided with --sighash-address) are necessary to produce the multisig addresses’ signature. For instance, if we have 6 total addresses with a threshold of 4, then 4 of those 6 signatures are necessary to sign for the multisig address.</li><li>--since-absolute-epoch prevents the cells held at this address from being spent before a given time, defined by the absolute epoch when they unlock. For more information on setting restrictions on when a cell’s can be spent, see <a href="https://github.com/nervosnetwork/rfcs/blob/master/rfcs/0017-tx-valid-since/0017-tx-valid-since.md">RFC17: Transaction valid since</a> (as use with caution so you don’t accidentally lock your funds for longer than you wanted!).</li></ul><p>This small set of features can create many different configurations to suit an application’s needs!</p><h3>Getting Set Up</h3><p>We are going to create a multisig address with 2 signers, both of which are required (threshold = 2). Note that this means you’ll need the keys to both addresses locally if you’d like to follow along. You may first want to run account list to see how many accounts you have set up:</p><pre><strong>CKB&gt;</strong> account list</pre><pre>- “#”: 0<br>  address:<br>     mainnet: ckb1qyqv8256ceslzzp72rxfz5wutpsfk35jzdas5tn693<br>     testnet: ckt1qyqv8256ceslzzp72rxfz5wutpsfk35jzdasfwd9fd<br>  lock_arg: 0xc3aa9ac661f1083e50cc9151dc58609b4692137b<br>  lock_hash: 0x386815b600bc6064b9333105a331af34c376ed60264e14fc6f4717889bcf58ec<br>- “#”: 1<br>  address:<br>     mainnet: ckb1qyqru2kkvk3vk35k607y5gtsglwjtccdw0xsdhhzuv<br>     testnet: ckt1qyqru2kkvk3vk35k607y5gtsglwjtccdw0xssjfass<br>  lock_arg: 0x3e2ad665a2cb4696d3fc4a217047dd25e30d73cd<br>  lock_hash: 0x47e22ab140292a7bc7aa4959e049fd138b60e2e9a38921df27f44cdc761de50e</pre><p>If you need additional accounts (you might want a 3rd for your destination), just run account new until you have enough.</p><p>You will also need funds on at least one of these accounts. If you’d like to do this on a local devnet, <a href="https://docs.nervos.org/dev-guide/devchain.html">follow this Dev Chain guide</a>. If you are using Aggron, you can get CKB <a href="https://faucet.nervos.org/">from the faucet</a>.</p><p>Remember — since both of these are considered ‘testnet’, we’ll use testnet addresses throughout the guide — <em>not</em> mainnet addresses.</p><h3>Create and Fund the Multisig Address</h3><p>The first step is to create the multisig address with the command we detailed above:</p><pre>tx build-multisig-address --sighash-address &lt;sighash-address&gt;…</pre><p>For --sighash-address we will list all the 2 addresses we want to sign for this multisig account. We also want all signatures to be required, so we’ll set the optional threshold parameter equal to the number of sighash addresses:</p><pre><strong>CKB&gt;</strong> tx build-multisig-address --sighash-address ckt1qyqv8256ceslzzp72rxfz5wutpsfk35jzdasfwd9fd ckt1qyqru2kkvk3vk35k607y5gtsglwjtccdw0xssjfass --threshold 2</pre><pre><br>lock-arg: 0x74573da67951f1192dccbf76bfea95b5766009a4<br>lock-hash: 0x2de9aac553771d51d865f9862cf6bcb0f7d00913fdd10cda9f6525a1be6fd95b<br>mainnet: ckb1qyqhg4ea5eu4ruge9hxt7a4la22m2anqpxjq3ty9au<br>testnet: ckt1qyqhg4ea5eu4ruge9hxt7a4la22m2anqpxjqvw663q</pre><p>As the output shows, the testnet multisig address we created is ckt1qyqhg4ea5eu4ruge9hxt7a4la22m2anqpxjqvw663q.</p><p>The address is created with a balance of 0, so we’ll now have to fund it. We can do this with the wallet transfer subcommand, which we’ll use to send funds from one of our two accounts:</p><pre><strong>CKB&gt;</strong> wallet transfer --from-account 0xc3aa9ac661f1083e50cc9151dc58609b4692137b --to-address ckt1qyqhg4ea5eu4ruge9hxt7a4la22m2anqpxjqvw663q --capacity 500 --tx-fee 0.0001</pre><pre>Password:</pre><pre>0x7645a048504fcf495a2c42a0c8387e7be52c048ae1172b554daf272e29c89af8</pre><p>After entering our password, we get the transaction hash returned by the client. <em>(Note: if you are using a local dev chain, remember to run your miner now so the operation gets included in a block!)</em> We can confirm this operation succeeded by looking at the live cells of our multisig address:</p><pre><strong>CKB&gt;</strong> wallet get-live-cells --address ckt1qyqhg4ea5eu4ruge9hxt7a4la22m2anqpxjqvw663q</pre><pre>current_capacity: 500.0 (CKB)<br>current_count: 1<br>live_cells:<br>     - capacity: 500.0 (CKB)<br>       data_bytes: 0<br>       index:<br>          output_index: 0<br>          tx_index: 1<br>       lock_hash: 0x2de9aac553771d51d865f9862cf6bcb0f7d00913fdd10cda9f6525a1be6fd95b<br>       mature: true<br>       number: 1054<br>       tx_hash: 0x7645a048504fcf495a2c42a0c8387e7be52c048ae1172b554daf272e29c89af8<br>       tx_index: 0<br>       type_hashes: ~<br>total_capacity: 500.0 (CKB)<br>total_count: 1</pre><p>(Interested in learning more about cells and Nervos’ Cell Model? Here is the <a href="https://docs.nervos.org/key-concepts/cell-model.html">documentation</a> and a helpful <a href="https://docs.nervos.org/key-concepts/cell-model.html">Medium Post</a>).</p><p>This multisig address is now created and funded with 500 CKB!</p><h3>Transferring from the Multisig</h3><p>Transferring from a multisig is different than transferring from a normal address. Instead of using the wallet transfer subcommand, we are going to use CKB-CLI to create a JSON file which we’ll populate with the inputs, outputs, and signatures we’d like until the transaction is fully formed.</p><p>First, let’s decide what to call our transaction file and create it. ‘multisig.json’ seems good:</p><pre><strong>CKB&gt; </strong>tx init --tx-file multisig.json</pre><pre>status: success</pre><p>Let’s now populate it with the elements that form this transaction. We’ll start by telling it the signatures we’ll be providing with the following command:</p><pre>tx add-multisig-config [OPTIONS] --sighash-address &lt;sighash-address&gt;… --tx-file &lt;tx-file&gt;</pre><p>In our case we want to set the threshold to 2 as well because we need signatures from both sighash addresses. Note that we’re not deciding we want both signatures now (that was decided when we made the multisig address), we’re just telling the <em>transaction</em> what it should expect:</p><pre>CKB&gt; tx add-multisig-config --sighash-address ckt1qyqv8256ceslzzp72rxfz5wutpsfk35jzdasfwd9fd ckt1qyqru2kkvk3vk35k607y5gtsglwjtccdw0xssjfass --threshold 2 --tx-file multisig.json</pre><pre>status: success</pre><p>The transaction file is now set up to expect signatures from both addresses, which is required by the input cell owned by our multisig address. Let’s now add that input cell owned by our multisig address to this transaction with this command:</p><pre>tx add-input --tx-hash &lt;tx-hash&gt; --index &lt;index&gt; --tx-file &lt;tx-file&gt;</pre><p>We can get both tx-hash and index from the result of tx get-live-cells which we ran earlier:</p><pre>CKB&gt; tx add-input --tx-hash 0x7645a048504fcf495a2c42a0c8387e7be52c048ae1172b554daf272e29c89af8 --index 0 --tx-file multisig.json</pre><pre>status: success</pre><p>Now we need to tell the transaction file where to send CKB from the multisig. The capacity of the output must be less than the capacity of the input with enough CKB to spare to pay the transaction fee. If no change output is added, any CKB inputs not sent to outputs are considered fees paid to the miner. By default, fees of over 1 CKB are not allowed to prevent accidentally sending too much fee to the miner, but this is also configurable. Let’s send 400 CKB, pay a fee of 0.001 CKB, and send the rest back to one of our accounts as change. We’ll use this command to set the outputs:</p><pre>tx add-output [OPTIONS] --capacity &lt;capacity&gt; --tx-file &lt;tx-file&gt;</pre><p>There are a few ways to set the destination of these funds, so none of them are listed as defaults. They are:</p><pre>--to-sighash-address &lt;to-sighash-address&gt;<br>          To normal sighash address<br>--to-short-multisig-address &lt;to-short-multisig-address&gt;<br>          To short multisig address<br>--to-long-multisig-address &lt;to-long-multisig-address&gt; <br>          To long multisig address (special case, include since)</pre><p>Our destination is a normal sighash address, so we’ll use the first option:</p><pre>CKB&gt; tx add-output --to-sighash-address ckt1qyq9x0frsy76j2ynf2taay4ssy85x76vm4kszxshna --capacity 400 --tx-file multisig.json</pre><pre>status: success</pre><p>We’ve now created our transaction file, set the signing requirement, added an input, and added an output. Now seems like a fine time to check the status of our transaction file with tx info --tx-file &lt;tx-file&gt;. This is a helpful command you can use at any time to check the state of our JSON file:</p><pre>CKB&gt; tx info --tx-file multisig.json</pre><pre>[input] ckt1qyqhg4ea5eu4ruge9hxt7a4la22m2anqpxjqvw663q =&gt; 500.0, (data-length: 0, type-script: none, lock-kind: multisig without since)<br>[output] ckt1qyq9x0frsy76j2ynf2taay4ssy85x76vm4kszxshna =&gt; 400.0, (data-length: 0, type-script: none, lock-kind: sighash(secp))<br>input_total: 500.0 (CKB)<br>output_total: 400.0 (CKB)<br>tx_fee: 100.0 (CKB)</pre><p>As expected, we see our input cell with a capacity of 500 CKB and an output of 400 CKB to the destination we set. The transaction fee is currently 100 CKB as we haven’t yet told the transaction where to send our change. Let’s do that next.</p><p>First, we’ll need a change address associated with one of our accounts:</p><pre>CKB&gt; account extended-address --lock-arg 0xc3aa9ac661f1083e50cc9151dc58609b4692137b --path “m/44&#39;/309&#39;/0&#39;/1/0”</pre><pre>Password:</pre><pre>address:<br>  mainnet: ckb1qyqtgsg6n2u2qrr4hrsm7993dmddu898ldfs6xv5w6<br>  testnet: ckt1qyqtgsg6n2u2qrr4hrsm7993dmddu898ldfs8rjtzx<br>lock_arg: 0xb4411a9ab8a00c75b8e1bf14b16edade1ca7fb53</pre><p>Now let’s create an output cell for that address so that only 0.001 CKB remains as the transaction fee:</p><pre>CKB&gt; tx add-output --to-sighash-address ckt1qyqtgsg6n2u2qrr4hrsm7993dmddu898ldfs8rjtzx --capacity 99.999 --tx-file multisig.json</pre><pre>Status: success</pre><p>Let’s make sure we have our transaction fee correct now:</p><pre>CKB&gt; tx info — tx-file multisig.json</pre><pre>[input] ckt1qyqhg4ea5eu4ruge9hxt7a4la22m2anqpxjqvw663q =&gt; 500.0, (data-length: 0, type-script: none, lock-kind: multisig without since)<br>[output] ckt1qyq9x0frsy76j2ynf2taay4ssy85x76vm4kszxshna =&gt; 400.0, (data-length: 0, type-script: none, lock-kind: sighash(secp))<br>[output] ckt1qyqtgsg6n2u2qrr4hrsm7993dmddu898ldfs8rjtzx =&gt; 99.999, (data-length: 0, type-script: none, lock-kind: sighash(secp))<br>input_total: 500.0 (CKB)<br>output_total: 499.999 (CKB)<br>tx_fee: 0.001 (CKB)</pre><p>Looks great! With our transaction properly constructed, it’s now time to sign it and add the signatures.</p><h3>Signing the Transaction</h3><p>Now that we know the transaction is finalized, it’s time to sign it with each signature. Note that we aren’t signing with the multisig address, we are signing with each account that makes up the multisig. We’ll need as many signatures as we set the threshold to when creating our multisig, which in this case is two. Here’s the operation to sign:</p><pre>tx sign-inputs --from-account &lt;from-account&gt; --tx-file &lt;tx-file&gt;</pre><p>Let’s use it to sign with our first account:</p><pre>CKB&gt; tx sign-inputs --from-account 0xc3aa9ac661f1083e50cc9151dc58609b4692137b --tx-file multisig.json</pre><pre>Password:</pre><pre>- lock-arg: 0x74573da67951f1192dccbf76bfea95b5766009a4<br>  signature: 0x9afd86f6ac3022bbab1b6c05743f6a647005d91b358d78decff9ffa6b5f860692e04a655c21bd9bcd54cd02380eaa105667ed4d70659ccaeef74f08ccd313be000</pre><p>After entering our password for that account, the operation’s response gives us a lock-arg and a signature associated with it. Notice the lock-arg in the response is not the lock-arg provided in the --from-account field — it is the lock-arg of our multisig! Just like inputs and outputs, this signature also needs to be added to our transaction file. Here’s the command:</p><pre>tx add-signature --lock-arg &lt;lock-arg&gt; --signature &lt;signature&gt; --tx-file &lt;tx-file&gt;</pre><p>For both --lock-arg and --signature we can use the response from our previous command. —-tx-file is the same we’ve used up until this point:</p><pre>CKB&gt; tx add-signature --lock-arg 0x74573da67951f1192dccbf76bfea95b5766009a4 --signature 0x9afd86f6ac3022bbab1b6c05743f6a647005d91b358d78decff9ffa6b5f860692e04a655c21bd9bcd54cd02380eaa105667ed4d70659ccaeef74f08ccd313be000 --tx-file multisig.json</pre><pre>status: success</pre><p>Excellent! That first signature is added. Let’s now add the second signature. However, this time let’s condense the two-step process of signing and adding the signature to the JSON file into one step using the--add-signatures option for tx sign-intputs:</p><pre>CKB&gt; tx sign-inputs --from-account 0x3e2ad665a2cb4696d3fc4a217047dd25e30d73cd --tx-file multisig.json --add-signatures</pre><pre>Password:</pre><pre>- lock-arg: 0x74573da67951f1192dccbf76bfea95b5766009a4<br>  signature: 0x3ee146e3f8386c005e8a921a97b1bbf126346e1d07f36b8aec340de64d0f90a17be4c4eae9fd083113846d47373583bdae89817e1b4f250c8950c1da9c5f8b8d00</pre><p>Great! With both signatures added, this operation should be ready to go. Let’s do one final check to make sure our inputs are signed:</p><pre>CKB&gt; tx info — tx-file multisig.json</pre><pre>[input(signed)] ckt1qyqhg4ea5eu4ruge9hxt7a4la22m2anqpxjqvw663q =&gt; 500.0, (data-length: 0, type-script: none, lock-kind: multisig without since)<br>[output] ckt1qyq9x0frsy76j2ynf2taay4ssy85x76vm4kszxshna =&gt; 400.0, (data-length: 0, type-script: none, lock-kind: sighash(secp))<br>[output] ckt1qyqtgsg6n2u2qrr4hrsm7993dmddu898ldfs8rjtzx =&gt; 99.999, (data-length: 0, type-script: none, lock-kind: sighash(secp))<br>input_total: 500.0 (CKB)<br>output_total: 499.999 (CKB)<br>tx_fee: 0.001 (CKB)</pre><p>This operation is ready to be sent to the node!</p><h3>Submitting the Transaction to the Node</h3><p>With our transaction JSON file finalized, all that’s left is submitting it to the blockchain. It will then be included in a block and reflected in the network’s state.</p><pre>CKB&gt; tx send --tx-file multisig.json</pre><pre>0x8d3bf4eb2d61408241092e451cff375b188b709e34ea77e56e4d44e81d150700</pre><h3>Confirming the Transaction</h3><p>Our operation has been submitted to the chain! Let’s make sure it actually happened. There are a few ways we can do this, but let’s start by just looking at the transaction itself:</p><pre>CKB&gt; rpc get_transaction --hash 0x8d3bf4eb2d61408241092e451cff375b188b709e34ea77e56e4d44e81d150700</pre><pre>transaction:<br>  cell_deps:<br>     - dep_type: dep_group<br>       out_point:<br>         index: 1<br>         tx_hash: 0x10212028a561ca990f0cc007ca7f1e3e7c6bbf0aa9a68f5a47ec47c01b4cf38a<br>  hash: 0x8d3bf4eb2d61408241092e451cff375b188b709e34ea77e56e4d44e81d150700<br>  header_deps: []<br>  inputs:<br>    - previous_output:<br>        index: 0<br>        tx_hash: 0x7645a048504fcf495a2c42a0c8387e7be52c048ae1172b554daf272e29c89af8<br>      since: 0x0 (absolute block(0))<br>  outputs:<br>    - capacity: “400.0”<br>      lock:<br>        args: 0x533d23813da928934a97de92b0810f437b4cdd6d<br>        code_hash: 0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8 (sighash)<br>        hash_type: type<br>      type: ~<br>    - capacity: “99.999”<br>      lock:<br>        args: 0xb4411a9ab8a00c75b8e1bf14b16edade1ca7fb53<br>        code_hash: 0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8 (sighash)<br>        hash_type: type<br>      type: ~<br>  outputs_data:<br>    - 0x<br>    - 0x<br>  version: 0<br>  witnesses:<br>    -<br>0xc200000010000000c2000000c2000000ae00000000000202c3aa9ac661f1083e50cc9151dc58609b4692137b3e2ad665a2cb4696d3fc4a217047dd25e30d73cd3ee146e3f8386c005e8a921a97b1bbf126346e1d07f36b8aec340de64d0f90a17be4c4eae9fd083113846d47373583bdae89817e1b4f250c8950c1da9c5f8b8d009afd86f6ac3022bbab1b6c05743f6a647005d91b358d78decff9ffa6b5f860692e04a655c21bd9bcd54cd02380eaa105667ed4d70659ccaeef74f08ccd313be000</pre><pre>tx_status:<br>  block_hash: 0x003b6b86e725d94256fa618a7bb794e04eae687e1d25ac75638989754b89ca3a<br>  status: committed</pre><p>These transaction details show us the two output cells we expected: the first for 400 CKB which is now owned by the lock-arg associated with the--to-address we set (ckt1qyq9x0frsy76j2ynf2taay4ssy85x76vm4kszxshna). The second is for 99.999 CKB to on of our change addresses (ckt1qyqtgsg6n2u2qrr4hrsm7993dmddu898ldfs8rjtzx) which is owned by the lock-arg of this extended-address (0xb4411a9ab8a00c75b8e1bf14b16edade1ca7fb53).</p><p>Balance checks on any of the addresses or lock-args also confirm things we exactly as we intended:</p><pre>CKB&gt; wallet get-capacity --lock-arg 0x533d23813da928934a97de92b0810f437b4cdd6d</pre><pre>total: 400.0 (CKB)</pre><pre>CKB&gt; wallet get-capacity --address ckt1qyqtgsg6n2u2qrr4hrsm7993dmddu898ldfs8rjtzx</pre><pre>total: 99.999 (CKB)</pre><p>That’s it! See below for the final contents of the multisig.json file we created during this guide.</p><h3>Final File Contents — multisig.json</h3><pre>{   <br>  &quot;transaction&quot;: {     <br>    &quot;version&quot;: &quot;0x0&quot;,<br>    &quot;cell_deps&quot;: [<br>       {<br>         &quot;out_point&quot;: {<br>           &quot;tx_hash&quot;: &quot;0x10212028a561ca990f0cc007ca7f1e3e7c6bbf0aa9a68f5a47ec47c01b4cf38a&quot;,<br>           &quot;index&quot;: &quot;0x1&quot;<br>         },<br>         &quot;dep_type&quot;: &quot;dep_group&quot;<br>       }     ],<br>     &quot;header_deps&quot;: [],<br>     &quot;inputs&quot;: [<br>       {<br>         &quot;since&quot;: &quot;0x0&quot;,<br>         &quot;previous_output&quot;: {<br>           &quot;tx_hash&quot;: &quot;0x7645a048504fcf495a2c42a0c8387e7be52c048ae1172b554daf272e29c89af8&quot;,<br>           &quot;index&quot;: &quot;0x0&quot;<br>         }<br>       }<br>     ],<br>     &quot;outputs&quot;: [<br>       {<br>         &quot;capacity&quot;: &quot;0x9502f9000&quot;,<br>         &quot;lock&quot;: {<br>           &quot;code_hash&quot;: &quot;0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8&quot;,<br>           &quot;hash_type&quot;: &quot;type&quot;,<br>           &quot;args&quot;: &quot;0x533d23813da928934a97de92b0810f437b4cdd6d&quot;<br>         },<br>         &quot;type&quot;: null<br>       },<br>       {<br>         &quot;capacity&quot;: &quot;0x2540a5d60&quot;,<br>         &quot;lock&quot;: {<br>           &quot;code_hash&quot;: &quot;0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8&quot;,<br>           &quot;hash_type&quot;: &quot;type&quot;,<br>           &quot;args&quot;: &quot;0xb4411a9ab8a00c75b8e1bf14b16edade1ca7fb53&quot;<br>         },<br>         &quot;type&quot;: null<br>       }<br>     ],<br>     &quot;outputs_data&quot;: [<br>       &quot;0x&quot;,<br>       &quot;0x&quot;<br>     ],<br>     &quot;witnesses&quot;: []   },<br>   &quot;multisig_configs&quot;: {<br>     &quot;0x74573da67951f1192dccbf76bfea95b5766009a4&quot;: {<br>       &quot;sighash_addresses&quot;: [<br>         &quot;ckt1qyqv8256ceslzzp72rxfz5wutpsfk35jzdasfwd9fd&quot;,<br>         &quot;ckt1qyqru2kkvk3vk35k607y5gtsglwjtccdw0xssjfass&quot;<br>       ],<br>       &quot;require_first_n&quot;: 0,<br>       &quot;threshold&quot;: 2<br>     }<br>   },<br>   &quot;signatures&quot;: {<br>     &quot;0x74573da67951f1192dccbf76bfea95b5766009a4&quot;: [<br>      &quot;0x3ee146e3f8386c005e8a921a97b1bbf126346e1d07f36b8aec340de64d0f90a17be4c4eae9fd083113846d47373583bdae89817e1b4f250c8950c1da9c5f8b8d00&quot;,<br>       &quot;0x9afd86f6ac3022bbab1b6c05743f6a647005d91b358d78decff9ffa6b5f860692e04a655c21bd9bcd54cd02380eaa105667ed4d70659ccaeef74f08ccd313be000&quot;<br>     ]<br>   }<br> }</pre><p>Please stay tune for other guides covering how to do transactions with CKB-CLI!</p><p>Interested in learning more about our Nervos development? You can follow us on <a href="https://twitter.com/obsidian_llc">Twitter</a> and <a href="https://medium.com/@obsidian.systems">Medium</a>!</p><p><em>We’d like to thank Nervos for their support as we develop a </em><a href="https://talk.nervos.org/t/obsidian-systems-ledger-nano-s-x-application-for-nervos/4349"><em>Ledger application for Nervos</em></a><em> and add </em><a href="https://talk.nervos.org/t/obsidian-systems-hardware-wallet-support-in-ckb-cli-and-additional-ledger-features/4621"><em>hardware wallet support to CKB-CLI</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5fbd7f4f56e4" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Nervos Ledger App: Status Update #1]]></title>
            <link>https://medium.com/@obsidian.systems/nervos-ledger-app-status-update-1-1f02d431957e?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/1f02d431957e</guid>
            <category><![CDATA[proof-of-work]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[hardware-wallet]]></category>
            <category><![CDATA[nervos]]></category>
            <category><![CDATA[ledger]]></category>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Tue, 07 Apr 2020 14:42:43 GMT</pubDate>
            <atom:updated>2020-04-07T14:42:43.215Z</atom:updated>
            <content:encoded><![CDATA[<p><a href="https://obsidian.systems/">Obsidian Systems</a> has been hard at work bringing support for Nervos to the Ledger Nano S and Nano X and we would like to take this opportunity to update the community on our progress! You can find our original grant proposal on <a href="https://talk.nervos.org/t/obsidian-systems-ledger-nano-s-x-application-for-nervos/4349">Nervos Talk</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6qNX7ZO8b5KVKGYOR8_v7w.png" /></figure><h3>Where is the code?</h3><p>Adding support for hardware wallets requires more than just the application itself. It also involves teaching the client how to communicate with the device and providing wallet developers the tools they need to support Ledger devices. Our work thus far has touched on all of these points:</p><ul><li><a href="https://github.com/obsidiansystems/ledger-app-nervos">Ledger-App-Nervos</a>: This repository contains the Ledger application and our automated tests</li><li><a href="https://github.com/obsidiansystems/ckb-cli">Our Fork of CKB-CLI</a>: We’ve prepared substantial contributions to Nervos’ command line interface and added many changes to support Ledger devices</li><li><a href="https://github.com/obsidiansystems/ledgerjs/tree/nervos">Our Fork of LedgerJS</a>: This is the library used by wallet developers to communicate with Ledger devices. We’ve added support for Nervos in our fork</li></ul><h3>What’s the current status?</h3><p>As of <a href="https://github.com/obsidiansystems/ledger-app-nervos/releases/tag/v0.1.0">v0.1.0</a>, the Ledger app, along with our fork of CKB-CLI, has all the functionality we described in our proposal:</p><ul><li>The command line interface can find the connected hardware wallet</li><li>The client can provide a public key hash, lock arg, and lock hash from the device</li><li>Transfers can be confirmed on the device and signed</li><li>All DAO functions (deposit, prepare, withdraw) can be confirmed on the device and signed</li><li>All operations can be signed through LedgerJS</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OJZ99Oc-YJBZcJbfHpKt-g.jpeg" /></figure><h3>Can we use it yet?</h3><p>Not quite! There are some additional steps remaining before Ledger support is widely available. <strong>We do not recommend storing mainnet CKB on the application at this time</strong> as this app is still considered under development and experimental until it is supported in the upstream CKB-CLI.</p><p>First, we’re working with Nervos to add hardware wallet support to CKB-CLI. <a href="https://github.com/nervosnetwork/ckb-cli/issues/268">Here’s the issue we’ve opened to coordinate our efforts</a>.</p><p>We’re also working with Ledger to have the application available for download in Ledger Live. It will first be available in ‘Developer Mode’ before eventually being added to their production App Manager. This submission process is underway, but a timeline is not yet available.</p><p>In the meantime, we encourage interested parties who are technically inclined to experiment with the current version on test networks and the devnet! In fact, you’ll find documentation in our app that walks you through all of the app’s features. We greatly value the community’s feedback and hope some of you will give it a try!</p><h3>Acknowledgements</h3><p>We’d like to thank Nervos for their grant to work on this application and the Nervos community for their enthusiasm surrounding this project!</p><p>If you have any questions or feature requests, we encourage you to email us at <a href="mailto:nervos@obsidian.systems">nervos@obsidian.systems</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1f02d431957e" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kiln v0.8.0 — Carthage and New Node Storage Backend]]></title>
            <link>https://medium.com/kiln/kiln-v0-8-0-carthage-and-new-node-storage-backend-4dbeded0225a?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/4dbeded0225a</guid>
            <category><![CDATA[staking]]></category>
            <category><![CDATA[tezos-baking]]></category>
            <category><![CDATA[tezos]]></category>
            <category><![CDATA[kiln]]></category>
            <category><![CDATA[proof-of-stake]]></category>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Fri, 28 Feb 2020 18:32:40 GMT</pubDate>
            <atom:updated>2020-02-28T20:47:48.421Z</atom:updated>
            <content:encoded><![CDATA[<h3>Kiln v0.8.0 — Carthage and New Node Storage Backend</h3><p><a href="https://gitlab.com/obsidian.systems/kiln/-/tags/0.8.0">Kiln v0.8.0 is here</a>! This release adds support for the Carthage protocol and upgrades the Kiln Node’s storage backend. <strong>If you would like to bake after Carthage takes effect at block level 851,969, you must upgrade. You will also need to recreate your Kiln Node to adopt the new storage backend. </strong>This means upgrading will take more time than usual so we recommend 1) timing your upgrade so missed opportunities are minimized and 2) using a recent snapshot so your node is quickly in sync with the network again.</p><h3>Carthage Support</h3><p>Carthage introduces less jarring changes to the protocol than the Babylon upgrade. As such, there are few adjustments to Kiln’s code in this release.</p><p>More importantly, v0.8.0 contains the binaries for Carthage and protocol itself. With this upgrade, Kiln will begin running the baker and endorser for Carthage so it can seamlessly transition to the new protocol. Once the transition has happened, Kiln will automatically stop the baker and endorser for Babylon. Some of you may have already noticed benign errors from Kiln attempting to run the baker and endorser for Carthage as soon as the Promotion Period started! Those will go away with this upgrade.</p><p>Want to confirm Kiln has transitioned protocols when it happens? If you hover over ‘Network’ in the header, you can see the current protocol!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/955/1*Tmn0QK5rjAdLXJrVdqtoeg.png" /><figcaption>After the protocol transition, you’ll see the current protocol is PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb</figcaption></figure><h3>Node Backend Upgrade</h3><p>Tezos’ mainnet now includes a new storage backend for the Tezos node. Previously LMDB was used exclusively, and we now see the introduction of the irmin-pack backend. One of the most obvious benefits that comes with this change is a reduction in disk space consumed by the Tezos node.</p><p>Non-Kiln users will see <a href="https://tezos.gitlab.io/releases/december-2019.html#storage-upgrade">manual instructions for upgrading the node</a> vary depending on what history mode (archive, full, rolling) or branch they were previously using, but all upgrades generally involve restarting your node from a snapshot. For Kiln, we’ve followed a somewhat simplified path which boils down to the same solution — you must remove your node and start anew, preferably from a snapshot so downtime is minimized! Some snapshot providers we know of are <a href="https://tezosshots.com/">Tezos Shots</a>, <a href="https://snapshots.baketzfor.me/">Bake Tz for Me</a>, <a href="https://github.com/Phlogi/tezos-snapshots">Phlogi</a> (new snapshots daily!), <a href="https://snapshots.tulip.tools/#/">Tulip Tools</a>, and <a href="http://www.tezzieland.com/snapshots/">Tezziland</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*k_1yad3WQ8YC9scG" /><figcaption>After upgrading to v0.8.0, you should see this alert that the Kiln Node must be recreated.</figcaption></figure><p><strong>Note: The node’s upgrade is a breaking change for Kiln</strong>. If you rollback to a previous version, not only will you not have the Carthage protocol and binaries, your node will be of a different storage backend and fail to start properly. Please plan accordingly! If for some reason you have an issue upgrading, we recommend wiping Kiln from your machine and starting fresh with v0.8.0.</p><h3>Tezos Baking Ledger App</h3><p>Current versions of Tezos Baking will continue to work great on Carthage! There is no need to upgrade your baking Ledger device with this protocol transition.</p><p>If you have upgraded your Ledger Nano S to firmware 1.6.0 and you are having issues with it, Ledger has released a web based tool so you can upgrade your MCU firmware to v1.12. It can be found here — <a href="https://ledger-live-tools.now.sh/mcu-repair">https://ledger-live-tools.now.sh/mcu-repair</a>. This is a temporarily tool until Ledger Live uses the fixed MCU firmware by default.</p><p>We only recommend this tool for bakers who have already upgraded to firmware 1.6.0. If you are still on firmware 1.5.5, please wait for this fixed MCU firmware to be the default for installation through Ledger Live.</p><p>Have an issue? Please email us (tezos@obsidian.systems), tweet us (@obsidian_llc), or join our Baker Slack!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4dbeded0225a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kiln/kiln-v0-8-0-carthage-and-new-node-storage-backend-4dbeded0225a">Kiln v0.8.0 — Carthage and New Node Storage Backend</a> was originally published in <a href="https://medium.com/kiln">kiln</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kiln v0.7.3: Usability, Ledger, and Protocol Improvements]]></title>
            <link>https://medium.com/kiln/kiln-v0-7-3-usability-ledger-and-protocol-improvements-7b91123985d?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/7b91123985d</guid>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[tezos-baking]]></category>
            <category><![CDATA[proof-of-stake]]></category>
            <category><![CDATA[tezos]]></category>
            <category><![CDATA[kiln]]></category>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Thu, 12 Dec 2019 16:52:54 GMT</pubDate>
            <atom:updated>2019-12-12T16:52:54.654Z</atom:updated>
            <content:encoded><![CDATA[<p><a href="https://gitlab.com/obsidian.systems/kiln/-/tags/0.7.3">Version 0.7.3 of Kiln</a> is now available! This will be our last release of 2019, and it is full of mostly minor changes. Most notably:</p><ul><li>New ‘Ledger Disconnected’ Notification</li><li>Usability Improvements</li><li>Post-Babylon Clean Up</li></ul><h3>Ledger Improvements</h3><p>Kiln now notifies if your ledger device is disconnected! We’ve also added a status icon to the header which reports your connection status.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Vuei4l9UL82yry-W" /><figcaption>The icon in the top right always lets you know if your Ledger device is connected or not.</figcaption></figure><p>Ledger connectivity, particularly after voting or otherwise leaving the Baking app, is the most commonly reported issue. This notification will help combat this problem and dive deeper into diagnosing the issue. It is also helpful for dealing with curious cats who decide to hit ledger devices or gnaw on cables!</p><p>We’ve also updated the udev rules that our Debian distribution configures on your machine to be compatible with Ledger firmware 1.6.0. This configuration was updated with their firmware release, so this update makes sure the full stack of software remains compatible without any need for manual intervention.</p><h3>Usability</h3><p>We’ve listened to user suggestions and made several improvements!</p><p><strong>Refined ‘New Version of Tezos Available’ Notification</strong></p><p>The ‘New Tezos software” notification has been updated so checks if individual <em>monitored</em> nodes aren’t running the latest version of Tezos. This means bakers who are only running a Kiln Node won’t get a notification to upgrade since they can’t do it on their own. Bakers running many monitored nodes will see exactly which nodes of theirs need upgrading!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Rm1lnNTS7D2Kbv26" /><figcaption>The two nodes on the right are running the latest version of Tezos, while the node on the left is not.</figcaption></figure><p><strong>Gathering Baker Data…</strong></p><p>When you add a baker to Kiln, it begins asking the blockchain about all the information it can get about your baker. That includes its baking history (what blocks have you baked, if any?) and baking rights (what blocks are you supposed to bake? Which blocks were you supposed to bake?). There were some cases where Kiln would report that it was “Gathering baker data’ even though it had already retrieved all available information. This has been fixed!</p><p><strong>Snapshot Imports can be cancelled</strong></p><p>If a snapshot import ran into an issue or was simply taking too long, there was no way to exit out and you could get stuck in a bad state. That’s alleviated now that snapshot imports can be cancelled!</p><p><strong>New bip-ed25519 Derivation Scheme Baking Support</strong></p><p>A few months ago we <a href="https://medium.com/@obsidian.systems/v2-2-0-of-tezos-ledger-apps-babylon-support-and-more-e8df0e4ea161">announced</a> support for an improved bip-ed25519 derivation scheme in the Tezos protocol and on Ledger devices. You can now bake with that derivation scheme on Kiln! To see which addresses Kiln finds with on this new derivation scheme, you can hover over addresses to see the curve and path used to generate each address.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*MIhaoMrQxJtuNGvL" /><figcaption>Hovering over a PKH will tell you the signing curve and derivation path used to generate it.</figcaption></figure><h3>Mac Support</h3><p>If you have the <a href="https://nixos.org/nix/">Nix Package Manager</a> installed, you can now <a href="https://gitlab.com/obsidian.systems/kiln/blob/develop/docs/distros/build-from-source.md">build Kiln from source</a> on MacOS! <a href="https://github.com/NixOS/nix/issues/2925">Just don’t try on Catalina</a>, as nix is not currently supported on that operating system. This is not recommended for your average user, as it is a more technical process than nicely packaged version of Kiln, such as our debian package for Ubuntu.</p><p>Unfortunately this is the only update we can provide regarding Mac support at this time. Due to shifting priorities, we will not be releasing a distribution of Kiln for mac in 2019, but we hope to in 2020.</p><h3>Post-Babylon Clean Up</h3><p>Leading up to Babylon, we made several improvements to the core logic that handles block data and node RPC communications. Written in Haskell, we’ve moved this logic to a <a href="https://gitlab.com/obsidian.systems/tezos-bake-monitor-lib">separate project</a> that anyone can use for their own Tezos projects! We’ve already used it on several and we’ve received a <a href="https://gitlab.com/obsidian.systems/tezos-bake-monitor-lib/merge_requests/12">merge request</a> from the community, too!</p><p>We’ve also disabled support for the alphanet test network and instead now support babylonnet, however Carthagenet is not yet supported. We’ve also removed the Tzscan Public Node and updated block hash links so they now point to <a href="https://tzstats.com/">tzstats.com</a>.</p><p>Questions? Encountered a bug? Email us at tezos@obsidian.systems, tweet us @obsidian_llc, join our slack group (just ask for an invite), or post your question on Tezos Stack Exchange! We’d love to hear from you.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7b91123985d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kiln/kiln-v0-7-3-usability-ledger-and-protocol-improvements-7b91123985d">Kiln v0.7.3: Usability, Ledger, and Protocol Improvements</a> was originally published in <a href="https://medium.com/kiln">kiln</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tezos Ledger App Updates: Manager.tz Operations, Named Delegates, and More]]></title>
            <link>https://medium.com/@obsidian.systems/tezos-ledger-app-updates-manager-tz-operations-named-delegates-and-more-9bed95e593b9?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/9bed95e593b9</guid>
            <category><![CDATA[ledger]]></category>
            <category><![CDATA[tezos-baking]]></category>
            <category><![CDATA[proof-of-stake]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[tezos]]></category>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Thu, 12 Dec 2019 15:16:43 GMT</pubDate>
            <atom:updated>2019-12-12T15:16:43.936Z</atom:updated>
            <content:encoded><![CDATA[<h3>Tezos Ledger App Updates: Ledger Live, Manager.tz Operations, and More</h3><p>In case you missed it, you can now <a href="https://www.ledger.com/the-next-level-of-ledger-live-staking-and-tezos-support">send, receive, or delegate your XTZ directly in Ledger Live</a>! We’re thrilled that this functionality is now available to the Tezos community and would like to thank <a href="https://tqtezos.com/">TQ Tezos</a> and <a href="https://www.ledger.com/">Ledger</a> for making this possible.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*H7tkXssSW_neeX0wFZFhvQ.png" /></figure><p>In addition to that release, we’ve added several new features to Tezos’ Ledger applications recently! You can now download v2.2.5 from <a href="https://www.ledger.com/ledger-live/">Ledger Live</a> or <a href="https://github.com/obsidiansystems/ledger-app-tezos/releases/tag/v2.2.5-rc2">Github</a>, which includes:</p><ul><li>Manager.tz Operation Support (v2.2.1+)</li><li>Named Delegates via the Baker Registry Smart Contract</li><li>Nano X Bluetooth Communication</li><li>Ledger Firmware 1.6.0 Support</li></ul><p>While Ledger Firmware 1.6.0 support spans both applications, the rest of these changes only apply to Tezos Wallet. Nonetheless, we increment the version of both apps in lockstep with each release to preserve everyone’s sanity. These changes have been spread out across several releases, some internal, starting with v2.2.1 and ending with v2.2.5. For the full changelog for each release, see our <a href="https://github.com/obsidiansystems/ledger-app-tezos/releases">releases page</a>!</p><p><strong><em>Important: Bakers should NOT upgrade the firmware on their baking Ledger device. For more information, see below.</em></strong></p><p><em>Note: You’ll have to upgrade your Ledger device to firmware 1.6.0 to download this new version from Ledger Live, otherwise you’ll see v2.2.0 with firmware 1.5.5. This is currently only recommended for the Tezos Wallet App.</em></p><h3>Manager.tz Operation Support</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*B5kmQpkXJX0O9XMvmrnqxA.png" /><figcaption>The manager.tz smart contract</figcaption></figure><p>Versions v2.2.1+ display <a href="https://gitlab.com/nomadic-labs/mi-cho-coq/blob/master/src/contracts/manager.tz">manager.tz smart contract</a> operations in the device UI so users have improved security when using newly-scriptful KT1 originated accounts! There are 4 operations the manager.tz contract supports which needed special parsing:</p><ul><li>Set delegate</li><li>Withdraw delegate</li><li>Transfer to contract</li><li>Transfer to implicit</li></ul><p>Pre-Babylon, a KT1 account was delegated with the operation tezos-client set delegate for my-account to my-baker. During the recent protocol change, all <em>scriptless</em> KT1 accounts were upgraded to <em>scriptful</em> managert.tz contracts and implicit accounts (tz*) became delegatable. This delegation operation can now be used to delegate an implicit account and, thanks to some tezos-client pleasantries, it still works for originated accounts, too.</p><p>But under the hood, delegating KT1 accounts has fundamentally changed. Like many other interactions with a smart contract, the new operation is a call to the contract’s code in the form of a 0 XTZ transfer with a Michelson parameter:</p><pre>tezos-client transfer 0 from &lt;src&gt; to &lt;dst&gt; --entrypoint ‘do’ --arg ‘{ DROP ; NIL operation ; PUSH key_hash &lt;dlgt&gt; ; SOME ; SET_DELEGATE ; CONS }’</pre><p>In this operation:</p><ul><li>&lt;src&gt; is the implicit managers of the manager.tz contract (i.e. your tz* address)</li><li>&lt;dst&gt; is the manager.tz contract destination of the operation (i.e. your KT1 address)</li><li>&lt;dlgt&gt; is the baker to whom you wish to delegate</li></ul><p>Parsing the Michelson parameters on operations like this the first instance of Tezos Wallet reading Tezos’ smart contract language! We’re excited to expand upon this to support other great use cases such as token standard interfaces.</p><h3>Named Delegates</h3><p>Sticking with the delegation theme, Tezos Wallet v2.2.2+ will now show you the name of the Delegation Service to whom you’re delegating!</p><p>Let’s use the same example operation as before: tezos-client set delegate for my-account to my-baker. When signing this operation you’ll be prompted to ‘Confirm Delegation’ before being shown the fee, source PKH (your address), the PKH of the delegate you’re delegating, and the operation’s storage limit. <strong>It is always important to verify this information on the Ledger device to be sure you’re doing what you think you’re doing.</strong> In this case, its paramount that you confirm you’re delegating to the right baker.</p><p>This new feature makes this validation step more secure and more pleasant by showing an additional field, ‘Delegate Name’ , which displays the name of the delegation service associated with that PKH. For example, if you’re delegating to “Sample Baker”, you’ll see “Sample Baker” here. If the app doesn’t associate the PKH you provided with a baker, it will show a message encouraging you to verify the delegate’s address is correct. There are over 100 delegation services currently recognized, and you can still delegate to any baker you like, named or not.</p><p>We’re very pleased to have the <a href="https://forum.tezosagora.org/t/bakers-registry-discussion/1238/55">Baker Registry Smart Contract</a> as the data source for this feature, the contents of which you can see <a href="https://bakers.tulip.tools/#/">here</a> thanks to <a href="https://tulip.tools/#/">Tulip Tools</a>! Originated by the <a href="https://tezoscommons.org/">Tezos Commons Foundation</a>, this smart contract aggregates information about delegation services which they independently provide without the need for a central authority. It is the ideal, decentralized data source for a feature like this.</p><p>For now a hardcoded list of baker names and their PKHs is stored in Tezos Wallet, but we’ll be shifting to a more scalable solution in future releases.</p><h3>Other Release Notes</h3><p>These latest applications are designed to run on Ledger’s newest firmware (1.6.0). Tezos Wallet for the Nano X also now supports bluetooth communication! Mobile wallet apps (like Ledger Live for <a href="https://apps.apple.com/us/app/ledger-live-crypto-wallet/id1361671700">Apple</a> and <a href="https://play.google.com/store/apps/details?id=com.ledger.live&amp;hl=en_US">Android</a>) can now communicate with the app wirelessly.</p><p>There are two addition changes we’ve made under the hood. v2.2.4 relies on the blake2b cryptographic hashing function provided by the Ledger firmware instead of using a version in the app. We needed this function before it was provided by Ledger’s firmware in 1.5.5 and we’re just making the switch now to make room in the app for new features. We’ve also adjusted our parser so it is able to handle bigger operations, such as those that involve smart contracts.</p><h3>Tezos Baking App: Wait to Upgrade!</h3><p><strong>Bakers should wait until further notice before upgrading their baking Ledger to firmware 1.6.0.</strong> We’ve found an issue localized to the MCU firmware for the device and we will inform the community when a fixed firmware is available. Until then, Ledger has temporarily taken the app out of Ledger Live’s Manager.</p><p>The issue: we’ve observed that the Ledger device’s screen can go blank while Tezos Baking is running. When the screen goes blank, the device may stop responding to requests from the baker and endorser. If it does stop responding, these opportunities will be missed. Should this happen to you, simply unplug the device, plug it back in, and return to the Baking App. The issue will be temporarily solved.</p><p>Beyond this issue, there are no new features for Tezos Baking in this release and thus no need for bakers to upgrade.</p><h3>A Note on Troubleshooting Wallet Issues</h3><p>Since the Babylon protocol upgrade, we’ve seen many users reporting issues using their ledger device with their wallet provider. Not being able to move your crypto can be a frustrating experience, and everyone in the community wants to make sure these types of problems are minimized. In this case, some breaking changes have posed a challenge.</p><p>If you are still having trouble using your Ledger device with a wallet provider, we recommend reaching out to them for assistance — here are <a href="https://t.me/cryptonomicGalleonUsers">Galleon</a>, <a href="https://t.me/TezTechLabs">Tezbox</a>, and <a href="https://t.me/magnumwalletco">Magnum Wallet</a>’s dedicated Telegram support channels! We’ll work closely with them to make sure ledger support is as good and stable as it can be. If you are having issues using your ledger device with tezos-client, please let us know by opening an issue on our Github or emailing us at tezos@obsidian.systems.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9bed95e593b9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[v2.2.0 of Tezos Ledger Apps: Babylon Support and More]]></title>
            <link>https://medium.com/@obsidian.systems/v2-2-0-of-tezos-ledger-apps-babylon-support-and-more-e8df0e4ea161?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/e8df0e4ea161</guid>
            <category><![CDATA[ledger-nano-s]]></category>
            <category><![CDATA[ledger-nano-x]]></category>
            <category><![CDATA[tezos]]></category>
            <category><![CDATA[proof-of-stake]]></category>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Wed, 18 Sep 2019 16:50:08 GMT</pubDate>
            <atom:updated>2019-09-18T16:52:14.733Z</atom:updated>
            <content:encoded><![CDATA[<p>v2.2.0 of the Tezos Ledger applications is now available on <a href="https://shop.ledger.com/pages/ledger-live">Ledger Live</a>! Tezos Wallet is available for the Nano S and Nano X, while Tezos Baking is currently only available for the Nano S.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*CJBDYnBjgv_uRYllUVXuDQ.jpeg" /><figcaption>Photo Credit: <a href="http://www.ancientcivilizationslist.com/mesopotamian-civilization/17-facts-babylonian-civilization-didnt-know/">ancientcivilizationlist.com</a></figcaption></figure><p>In addition to Babylon support, this release introduces an improved bip32-ed25519 derivation scheme. We’ve also taken this opportunity to mention changes in how tezos-client represents hardened paths. We recommend all users upgrade at their earliest convenience.</p><h3>Babylon Support</h3><p>The Babylon amendment introduces changes to the binary format in common operations including transactions, delegations, originations, and reveals. v2.2.0 is the first release which can parse operations from both the Athens and the Babylon protocol. Prior versions will still be able to sign operations on Babylon, but they will not be able to parse them and show them on the Ledger device’s screen.</p><h3>New bip32-ed25519 Derivation Scheme</h3><p>Tezos now supports a new <a href="https://cardanolaunch.com/assets/Ed25519_BIP.pdf">bip32-ed25519</a> derivation scheme! This feature was made possible by <a href="https://www.ledger.com/ledger-nano-s-firmware-update-to-be-released-early-january-2019/">Ledger’s most recent firmware update (v1.5.5)</a>, support within the Tezos repository (<a href="https://gitlab.com/tezos/tezos/merge_requests/1164">!1164</a>), and this update to our Tezos applications. We recommended all wallet providers, exchanges, and other services generating many addresses use this new ed25519 derivation scheme over the existing one because it provides <a href="https://forum.web3.foundation/t/key-recovery-attack-on-bip32-ed25519/44">better account security</a> than the previous method. Another benefit is that it supports non-hardened paths, whereas the old ed25519 scheme is the only one which does not support them.</p><p>This feature is only visible if you are using a ledger application and version of tezos-client which supports it, otherwise tezos-client will not show it as an option. When available on the device, running list connected ledgers suggests 4 import secret key commands:</p><pre><strong>tezos-client import secret key ledger_user “ledger://major-squirrel-thick-hedgehog/bip25519/0h/0h”</strong></pre><pre>tezos-client import secret key ledger_user “ledger://major-squirrel-thick-hedgehog/ed25519/0h/0h”</pre><pre>tezos-client import secret key ledger_user “ledger://major-squirrel-thick-hedgehog/secp256k1/0h/0h”</pre><pre>tezos-client import secret key ledger_user “ledger://major-squirrel-thick-hedgehog/P-256/0h/0h”</pre><p>The first import command listed uses the new derivation scheme, bip25519. We’ve purposefully not changed the existing ed25519 scheme to preserve backwards compatibility. If you change nothing in your Tezos setup, expect no changes. However, <strong>we recommend that all new accounts use the bip25519 command instead of the legacy ed25519</strong>. After it is imported, the address can be treated the same as any other.</p><h3>New Representation of Hardened Paths in tezos-client</h3><p>Across all Tezos networks (mainnet, alphanet, and zeronet), hardened paths in ledger URIs are now represented with an (h) instead of a tick mark (&#39;).</p><p>Up until <a href="https://gitlab.com/tezos/tezos/merge_requests/1165">!1165</a>, import secret key commands have been formatted as:</p><pre>tezos-client import secret key ledger_user “ledger://major-squirrel-thick-hedgehog/ed25519/0<strong>&#39;</strong>/0<strong>&#39;</strong>”</pre><p>The &#39; near the end of the URI indicates that the derivation path is hardened. In almost all cases, this formatting of hardened paths works fine. But there can be instances where terminal shells (like bash) interpret the tick marks on the hardened derivation paths as quotation marks, which changes the imported address. In the worst case, this can result in a different address being imported than the one you expect. To avoid this, we’ve switched to to denoting hardened paths with an h:</p><pre>tezos-client import secret key ledger_user “ledger://major-squirrel-thick-hedgehog/ed25519/0<strong>h</strong>/0<strong>h</strong>”</pre><p>Similar to the ed25519 derivation scheme, you can continue to use the legacy /0&#39;/0&#39; representation and it will still work, but we recommend upgrading to the new syntax.</p><p>Questions? Feedback? Email us at tezos@obsidian.systems, tweet us @obsidian_llc, join our slack group, or post your question on <a href="https://tezos.stackexchange.com/">Tezos Stack Exchange</a>! We’d love to hear from you.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e8df0e4ea161" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kiln v0.6.0: Snapshots, Full Nodes, and Revamped Public Nodes]]></title>
            <link>https://medium.com/kiln/kiln-v0-6-0-snapshots-full-nodes-and-revamped-public-nodes-241e8baf4956?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/241e8baf4956</guid>
            <category><![CDATA[tezos-baking]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[kiln]]></category>
            <category><![CDATA[tezos]]></category>
            <category><![CDATA[proof-of-stake]]></category>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Wed, 31 Jul 2019 16:38:58 GMT</pubDate>
            <atom:updated>2019-07-31T16:38:58.775Z</atom:updated>
            <content:encoded><![CDATA[<p><a href="https://gitlab.com/obsidian.systems/tezos-bake-monitor/-/tags">Kiln v0.6.0 is now available!</a> This is a big update that makes getting started as a baker easier than ever.</p><p>The major updates in this release are:</p><ol><li>The Kiln Node can be started from a snapshot</li><li>The Kiln Node runs in Full Mode</li><li>Kiln can monitor full nodes</li><li>The Obsidian Public Node cache is now enabled by default</li><li>Notifications reminding the Kiln Baker to vote</li><li>A Notification when an update to Kiln is available</li></ol><h3>Kiln Node Updates</h3><p><strong>The Kiln Node now runs in full mode and can be started from a snapshot!</strong> Snapshots are taken at a given block level and represent the chain’s history up until that block level.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*tjV-K7KLXQuUiLr3" /></figure><p>When syncing a node from a snapshot, you only need to sync <em>from that block level</em> instead of syncing from the genesis block. Only needing to sync, for example, 500 blocks instead of 500,000 blocks drastically reduces the amount of time it takes to sync with the network. <strong>The Kiln Node can now sync in minutes instead of days!</strong></p><p>This also has a huge impact on storage requirements. As the Tezos blockchain grows larger, it takes more disk space to store chain history. For instance, as of July 2019 an archive node requires 188GB of disk space. Snapshots can bring that number down to the single digits.</p><p>Over time the node will store more chain history and that number will grow, but don’t worry — you can always recreate your node from a more recent snapshot to reduce storage requirements again!</p><p>If you are a Kiln user looking to upgrade your Kiln Node to full mode, you will need to delete your existing archive node and start a new node from a snapshot. <a href="https://medium.com/@obsidian.systems/how-to-upgrade-your-kiln-node-to-full-mode-from-a-snapshot-2fc173c3433f">You can find detailed instructions on how to upgrade here!</a></p><p>If you’d like to learn more about snapshots and how they work, we recommend reading <a href="https://blog.nomadic-labs.com/introducing-snapshots-and-history-modes-for-the-tezos-node.html">this post by Nomadic Labs</a>. We are able to bring this great feature to Kiln because of their excellent work!</p><h3>Data Source Updates</h3><p>In addition to running the Kiln Node in full mode, <strong>Kiln can monitor full nodes</strong> too!</p><p>Some backstory — Kiln keeps a cache of chain data that it builds from the nodes it runs or monitors. This cache builds its chain history from the collective state of <em>all</em> the nodes it is monitoring and re-evaluates its correctness every time it sees a new block. Not only does this offer the highest guarantees of accuracy, it allows Kiln to acknowledge states where monitored nodes recognize multiple chain heads, spot reorganizations effortlessly, and correct itself if its history is found to be incorrect due to a reorganization.</p><p>This cache is what serves the information you see in Kiln’s dashboard for existing features and lots of other potential features we’d love to introduce in the future. For instance, showing your baker’s efficiency would require that we know all your previous opportunities to bake (your rights), as well as all the times you successfully baked. We’d also want to know instances where a lower priority than yours was baked for your non-priority 0 rights (i.e. was a priority 2 block baked when you had priority 1 rights). Retrieving that information from a node can be costly and time consuming, which is why it must be stored in a cache. Additionally, Kiln recognizes nodes it is monitoring could be used for baking, so it politely polls for information as necessary rather than hammering it with requests. This means it can take a bit longer to build a cache of chain history, but we view that as a better alternative to missing opportunities due to an overloaded node.</p><p>Prior to this release, Kiln assumed it could grab all chain data from any node. This was a fine assumption when there were only archive nodes, but the introduction of two new, more lightweight history modes has challenged that assumption. Not only do they keep less chain history as an archive node, they could have been started from a recent snapshot resulting in partial history, too. Current Kiln users monitoring a full node started from a snapshot may have seen the results of this — Kiln indefinitely reporting that it is ‘Gathering Baker Data’ while it tries to retrieve information that is unavailable. That won’t happen anymore.</p><p>We’ve made Kiln smarter about what information it can get from monitored nodes so its cache can remain robust and correct no matter the data sources it has available. But that didn’t completely solve the issue; there was still the opportunity that the user’s nodes wouldn’t be sufficient for Kiln to correctly report chain data. For instance, if a user has a full node started from a snapshot only a few blocks ago, that isn’t enough information for us to see details of previous voting periods in the current amendment process or what your rights were several cycles ago.</p><p>To permanently fix this for all users, the <strong>OS Public Node now serves all the data Kiln needs to operate!</strong> This public node, which is really just an instance of Kiln with an exposed API for other instances of Kiln, has chain data cached and immediately available for other instances of Kiln. Since this will be a critical data source for most users <strong>we’ve enabled the OS Public Node by default</strong>, but you can disable it via the command line if you choose. Just know that you’ll need your own archive node for Kiln to behave correctly in this case.</p><h3>Notification Updates</h3><p>The overarching goal of Kiln is to make participating in Tezos as easy as possible. An important part of that means making sure our users are active and engaged participants in the protocol amendment process. For that reason, Kiln now sends <strong>voting notifications</strong>! You should generally expect notifications 1) at the start of a voting period, 2) half way through the voting period and 3) 90% through the voting period. I say ‘generally’ because the logic takes into account which amendment period it is and whether or not you have already voted. For instance, if you have already voted in the Proposal Period and new proposals are injected after that, we’ll let you know there are new proposals for you to consider — you can vote for up to 20!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*85TLoUlioIA6lrUR" /></figure><p>We’ve also added a <strong>notification when a new version of Kiln is available</strong>! Kiln updates can be critical to ensuring it continues to work properly. For example, protocol amendments may introduce changes that will break older versions of Kiln. We’ve added this notification to make sure you are aware of these updates and can upgrade in time to keep your baker running smoothly.</p><h3>Other Updates and Next Steps</h3><p>Like all Kiln releases, we’ve made some UI improvements and bug fixes along the way. You might also notice the browser tab now has a favicon and a page title!</p><p>For our next release, we’re making it easier to export logs from the node, baker, and endorser from Kiln’s UI. This should help us assist anyone who thinks they are having a problem with Kiln and root out any bugs more efficiently. This feature, along with the ability to run commands against tezos-client and tezos-admin-client (which is already in place), provide lots of flexibility for our users to do their own debugging, get assistance from our team, and fix issues.</p><p>We’re also making progress on distributions — an OVA file to run in Virtualbox, a Mac version, and a dedicated website! We don’t have release dates for these yet, but we are making progress on having them available.</p><p>Questions? Encountered a bug? Email us at tezos@obsidian.systems, tweet us @obsidian_llc, join our slack group (just ask for an invite), or post your question on <a href="https://tezos.stackexchange.com">Tezos Stack Exchange</a>! We’d love to hear from you.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=241e8baf4956" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kiln/kiln-v0-6-0-snapshots-full-nodes-and-revamped-public-nodes-241e8baf4956">Kiln v0.6.0: Snapshots, Full Nodes, and Revamped Public Nodes</a> was originally published in <a href="https://medium.com/kiln">kiln</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Upgrade Your Kiln Node to Full Mode from a Snapshot]]></title>
            <link>https://medium.com/kiln/how-to-upgrade-your-kiln-node-to-full-mode-from-a-snapshot-2fc173c3433f?source=rss-35293726c369------2</link>
            <guid isPermaLink="false">https://medium.com/p/2fc173c3433f</guid>
            <category><![CDATA[tezos-baking]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[blockchain-ux]]></category>
            <category><![CDATA[proof-of-stake]]></category>
            <category><![CDATA[tezos]]></category>
            <dc:creator><![CDATA[Obsidian Systems]]></dc:creator>
            <pubDate>Wed, 31 Jul 2019 16:24:00 GMT</pubDate>
            <atom:updated>2019-07-31T16:36:41.736Z</atom:updated>
            <content:encoded><![CDATA[<p>With the <a href="https://gitlab.com/obsidian.systems/tezos-bake-monitor/-/tags">release of v0.6.0</a>, Kiln now supports running the Kiln Node in full mode! This history mode is more lightweight than the archive mode previously supported. Existing Kiln users who want to upgrade their Kiln Node will need to take a few easy steps outlined in this guide to upgrade.</p><p>Depending on the speed of your machine and the recency of your snapshot, this upgrade process will take some time. It would be best to time it when you don’t have many baking or endorsing rights! 1 to 2 hours should do.</p><h3>Step 1: Download a Tezos Node Snapshot</h3><p>Before you begin upgrading the node you should download the snapshot you’ll be starting your node from. Doing this first helps minimize your node’s downtime and thus the chances of missing a bake or endorsement.</p><p>You should get your snapshot form a source you trust. Some reputable community members make these available, such as <a href="https://tezosshots.com/">Tezos Shots</a>, <a href="https://www.tzdutch.com/quicksync/">TzDutch</a>, and <a href="https://snapshots.baketzfor.me/">Bake ꜩ for Me</a>. You can also have someone else you know who has a node export one for you. Either way, it is important that you 1) trust the location you get your snapshot from and 2) verify the snapshot with a 3rd party. We’ll touch on number 2 later on.</p><h3>Step 2: Delete the Archive Node</h3><p>Now that you have your snapshot, you can delete the existing archive Kiln Node. As of this writing (July 2019) an archive node uses 188GB, so this will clear out a lot of disk space! You will not be able to recover this data once it is deleted, but don’t worry — your Kiln Node will be in sync with the network again soon.</p><p>To delete the node, click the menu icon in the top right corner of the Kiln Node’s tile. Select ‘Remove Node’ from the dropdown menu. In the modal that appears, click ‘Stop and Remove Node’.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZFDuU1KVjW9DGQuOsfo7rg.jpeg" /></figure><h3>Step 3: Import the Snapshot</h3><p>Now that you’ve removed the Kiln Node, you can re-add it using the snapshot you downloaded earlier. Click ‘Add Nodes’ in the left column to begin. In the modal that appears, click ‘Start Node’ on the far left to add a Kiln Node. That will open a modal with the options to initialize chain data from a snapshot or via peer-to-peer download from genesis. Click ‘Select Snapshot File’, select the snapshot from your machine and click ‘Add Node’ to start the import process! This step will take some time, depending on you machine’s specifications.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*d1R-EwmygryqffYn" /></figure><h3>Step 4: Verify the Snapshot</h3><p>Once the snapshot has finished uploading, you are in the closing stretch! All that’s left is to verify the snapshot. Click ‘Start Verification’ to begin.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*huc21q_6V4M-sKAa" /></figure><p>This will open a modal with details about the snapshot for you to verify. Be sure to read the instructions on this modal! You want to make sure this snapshot’s block hash — the hash of the highest block of the snapshot — is part of the chain’s history and is at the block level that you expect. This brief but important step helps protect the integrity of the Tezos blockchain.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*9jbyOdnEwXOC0Rrs" /></figure><p>Once you’ve verified the snapshot and hit ‘Start Node’, you’re done! Kiln will automatically generate an identity for your node and begin syncing.</p><p>The longer your node is running, the more disk space it will use. Over time, if you would like to reduce the amount of disk space your Kiln Node uses, you can repeat this process to free up space again.</p><p>Let us know if you have questions or run into any issues! You can reach us at tezos@obsidian.systems, tweet us @obsidian_llc, join our slack group (just ask for an invite), or post your question on <a href="https://tezos.stackexchange.com">Tezos Stack Exchange</a>! We’d be happy to help.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2fc173c3433f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kiln/how-to-upgrade-your-kiln-node-to-full-mode-from-a-snapshot-2fc173c3433f">How to Upgrade Your Kiln Node to Full Mode from a Snapshot</a> was originally published in <a href="https://medium.com/kiln">kiln</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>