<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.snowblossom.org/index.php?action=history&amp;feed=atom&amp;title=User-Guide</id>
	<title>User-Guide - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.snowblossom.org/index.php?action=history&amp;feed=atom&amp;title=User-Guide"/>
	<link rel="alternate" type="text/html" href="https://wiki.snowblossom.org/index.php?title=User-Guide&amp;action=history"/>
	<updated>2026-05-14T13:39:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.snowblossom.org/index.php?title=User-Guide&amp;diff=27&amp;oldid=prev</id>
		<title>Fireduck: migration</title>
		<link rel="alternate" type="text/html" href="https://wiki.snowblossom.org/index.php?title=User-Guide&amp;diff=27&amp;oldid=prev"/>
		<updated>2018-10-30T06:00:16Z</updated>

		<summary type="html">&lt;p&gt;migration&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Config Files ==&lt;br /&gt;
&lt;br /&gt;
* Each component uses a config file - [[Example Configs|Config Files]]&lt;br /&gt;
* By default, they're located in &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All programs that take config files support a parameter to allow config entries to be specified or overridden by environment variables. In config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;env_override_prefix=snowblossom_&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then any configuration entry can be read from the environment rather than the config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ export snowblossom_wallet_path=wallets/teapot-new9&lt;br /&gt;
$ sbc client-generic.conf&lt;br /&gt;
Aug 20, 2018 9:45:52 PM snowblossom.client.SnowBlossomClient &amp;amp;lt;init&amp;amp;gt;&lt;br /&gt;
INFO: Starting SnowBlossomClient version 1.3.2&lt;br /&gt;
Aug 20, 2018 9:45:52 PM snowblossom.lib.NetworkParams loadFromConfig&lt;br /&gt;
INFO: Using network teapot - testnet&lt;br /&gt;
Aug 20, 2018 9:45:52 PM snowblossom.client.Purse &amp;amp;lt;init&amp;amp;gt;&lt;br /&gt;
WARNING: Directory wallets/teapot-new9 does not contain wallet, creating new wallet&lt;br /&gt;
Total: 0.000000 (0.000000 pending) (0.000000 spendable)&lt;br /&gt;
Wallet Keys: 20, Addresses: 20, Fresh pool: 20&lt;br /&gt;
  1of1 ECDSA: 20&lt;br /&gt;
Here is an unused address:&lt;br /&gt;
snowtest:5v6q5s0038c2dn4q4zran5zj66uugs0plw8jpwrg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== Node ==&lt;br /&gt;
&lt;br /&gt;
Nodes store the blockchain and work with clients and miners.&lt;br /&gt;
&lt;br /&gt;
* Your node should always be running&lt;br /&gt;
* Everything else relies on your node&lt;br /&gt;
* You can configure 1 node, and modify your configs to connect there.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== Client ==&lt;br /&gt;
&lt;br /&gt;
Manage your wallet, addresses and keys. '''BACK UP YOUR WALLET'''&lt;br /&gt;
&lt;br /&gt;
The new client is super cool.&lt;br /&gt;
&lt;br /&gt;
=== Key Pool ===&lt;br /&gt;
&lt;br /&gt;
The client now maintains a pool of unused addresses and generates more as needed. The default key pool size is 100. You can change it with the key_pool_size parameter in your config.&lt;br /&gt;
&lt;br /&gt;
=== Wallet Files ===&lt;br /&gt;
&lt;br /&gt;
As you may have noticed, the client config has always specified a directory that contains the wallet files rather than a specific wallet file. This is why. Now wallets are sometimes multiple files. This allows the client to quickly write any new changes (like a new key or marking an address as used) to a new file. If that gets interupted or fails that is completely fine because the existing files are still there. On startup, a client reads all the files present in the directory, merges them in memory and writes out a new file of everything those source files contains. Only after that new complete merge is created, the old files can be safely removed.&lt;br /&gt;
&lt;br /&gt;
This all happens automatically, you don't have to worry about it. If you look in your wallet directory you might see something like this:&lt;br /&gt;
&lt;br /&gt;
* snow-2_05797c77068c.wallet&lt;br /&gt;
* snow-2_1fda3b142533.wallet&lt;br /&gt;
&lt;br /&gt;
or just a single file.&lt;br /&gt;
&lt;br /&gt;
==== Upgrading ====&lt;br /&gt;
&lt;br /&gt;
To upgrade from the old wallet file, you don't need to do anything. The new client will automatically read the old wallet.db, generate the new keypool and move on.&lt;br /&gt;
&lt;br /&gt;
==== Downgrading ====&lt;br /&gt;
&lt;br /&gt;
If you wish to go back to the old client, run the new client a few times until it merges everything into a single file and rename that file back to wallet.db. Then you can run the old client without trouble.&lt;br /&gt;
&lt;br /&gt;
==== Future Upgrades ====&lt;br /&gt;
&lt;br /&gt;
Each file has a built in version number, (also shown as the number after 'snow-'). If a client reads a file with a version number it doesn't recognize, it reads it and merges it as normal but does not delete the new file. It assumes the new versioned file has some new fields that it doesn't know how to operate on and leaves it. This way it will still be there when the user runs the new client again that knows how to read and merge it.&lt;br /&gt;
&lt;br /&gt;
This is all automatic, you don't need to worry about it.&lt;br /&gt;
&lt;br /&gt;
=== Syncing ===&lt;br /&gt;
&lt;br /&gt;
One awesome advantage of doing the wallet files in this way is that you can rsync these around or run multiple clients at once. Any changes by any clients will be written to new file names and the merge will happen just fine when a client reads those.&lt;br /&gt;
&lt;br /&gt;
This means if you are running the same wallet on multiple computers you can use any syncing mechanism to copy the files around. Unison, rsync, dropbox, etc. (Just don't do rsync --delete)&lt;br /&gt;
&lt;br /&gt;
=== Commands ===&lt;br /&gt;
&lt;br /&gt;
* balance - show balance of all addresses&lt;br /&gt;
* send &amp;lt;amount&amp;gt; &amp;lt;destination&amp;gt;&lt;br /&gt;
* monitor - show balance and wait and repeat&lt;br /&gt;
* getfresh [mark_used] [generate_now] - Get an unused address.&lt;br /&gt;
** If mark_used is true, the returned address will be marked as used so it won't get given out or used as change.&lt;br /&gt;
** If generate now is true, then a completely new address will be generated right now rather than one from the keypool.&lt;br /&gt;
* export &amp;lt;file&amp;gt; - export wallet to a json file&lt;br /&gt;
* import &amp;lt;file&amp;gt; - import json file, merge into wallet&lt;br /&gt;
* rpcserver - [[start up an HTTP json rpc server|JSON-RPC-Commands]]. This is done as an explicit command as a security feature to avoid starting one accidentally and maybe not knowing about it. Requires the following things in the config: rpc_port, rpc_username, rpc_password&lt;br /&gt;
&lt;br /&gt;
== Sending ==&lt;br /&gt;
&lt;br /&gt;
Open a terminal, or run '''cmd-here.bat''' and type:&lt;br /&gt;
&lt;br /&gt;
* Windows: &amp;lt;code&amp;gt;client.bat send &amp;amp;lt;amount&amp;amp;gt; &amp;amp;lt;snow:address&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Linux: &amp;lt;code&amp;gt;client.sh send &amp;amp;lt;amount&amp;amp;gt; &amp;amp;lt;snow:address&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fireduck</name></author>
		
	</entry>
</feed>