Development

From Ravencoin Wiki
Jump to navigationJump to search

This section of the wiki aims to document the code changes made by the Ravencoin Developers to the core code.

Currently organized into the phases of the roadmap - this structure will probably change as the project matures.

Phase 1

In addition to the X16R algorithm, most of the core code changes are in the chainparams file.

The details are broken down on the wiki page: chainparams.

If you are looking to port existing Bitcoin applications to include Ravencoin - some useful parameters are also available from the Ledger integration code on GitHub.

Summarised on the wiki page: Ledger integration

Phase 2

Assets (in progress)

From the roadmap document - RPC commands for working with assets:

issue(to_address, asset_name, qty, units=1, reissuable=false)

Issue an asset with unique name. Unit as 1 for whole units, or 0.00000001 for satoshi-like units. Qty should be whole number. Reissuable is true/false for whether additional units can be issued by the original issuer.

issuefrom(from_address, to_address, qty, units, units=1, reissuable=false)

Issue an asset with unique name from a specific address -- allows control of which address/private_key is used to issue the asset. Unit as 1 for whole units, or 0.00000001 for satoshi-like units. Qty should be whole number. Reissuable is true/false for whether additional units can be issued by the original issuer.

issuemore(to_address, asset_name, qty)

Issue more of a specific asset. This is only allowed by the original issuer of the asset and if the reissuable flag was set to true at the time of original issuance.

makeuniqueasset(address, asset_name, unique_id)

Creates a unique asset from a pool of assets with a specific name. Example: If the asset name is SOFTLICENSE, then this could make unique assets like SOFTLICENSE:38293 and SOFTLICENSE:48382 This would be called once per unique asset needed.

listassets(assets=*, verbose=false, count=MAX, start=0)

This lists assets that have already been created. It does not distinguish unique assets.

listuniqueassets(asset)

This lists the assets that have been made unique, and the address that owns the asset.

sendasset(to_address, asset, amount)

This sends assets from one asset holder to another.

sendassetfrom(from_address, to_address, asset, amount)

This sends asset from one asset holder to another, but allows specifying which address to send from, so that if a wallet that has multiple addresses holding a given asset, the send can disambiguate the address from which to send.

getassettransaction(asset, txid)

This returns details for a specific asset transaction.

listassettransactions(asset, verbose=false, count=100, start=0)

This returns a list of transactions for a given asset.

reward(from_address, asset, amount, except=[])

Sends RVN to holders of the the specified asset. The Raven is split pro-rata to holders of the asset. Any remainder that cannot be evenly divided to the satoshi (1/100,000,000 RVN) level will be added to the mining fee. ​except​ is a list of addresses to exclude from the distribution - used so that you could exclude treasury shares that do not participate in the reward.

send_asset(from_address, from_asset, to_asset, amount, except=[])

Sends an asset to holders of the the specified to_asset. This can be used to send a voting token to holders of an asset. Combined with a messaging protocol explaining the vote, it could act as a distributed voting system.

Phase 3

Rewards

Phase 4

Unique assets

Phase 5

Messaging

Phase 6

Voting