Stratis Smart Contracts Documentation. Stratis Platform

Size: px
Start display at page:

Download "Stratis Smart Contracts Documentation. Stratis Platform"

Transcription

1 Stratis Platform Aug 10, 2018

2

3 Contents 1 Contents 3 i

4 ii

5 Smart contracts can now be deployed on the Stratis Full Node. Like the Full Node, Stratis smart contracts are written in C#. Smart contracts extend the functionality of a blockchain and allow it to map out complex financial interactions through the sending of funds and storage of data. However, as we shall see later in the document, the uses of smart contracts are not limited to financial interactions. The audience for this document is anyone who wants to get started writing smart contracts on the Stratis Platform. Even if you have not written a smart contract before, this is a great place to start. This material provides some basic theory about smart contracts, briefly explores some use cases, and then helps you start creating your own smart contract. An interesting example of a smart contract, based on a real-world case, is supplied to kickstart your learning. This document assumes that you are familiar with basic blockchain concepts. When it comes to writing smart contracts, a basic knowledge of C# is also assumed. However, if you are new to C# or even programming, we recommend you continue to explore Stratis smart contracts as part of your C# learning experience. More resources on the C# language are available here. A basic knowledge of Swagger and working with the command-line interface would also be useful. Note: The Stratis Smart Contract platform is currently in an open alpha stage. Things may not be stable and aspects of the development process are subject to change. Please do not use the alpha version of Stratis Smart Contracts for production applications. Contents 1

6 2 Contents

7 CHAPTER 1 Contents 1.1 Smart Contracts - Basic Theory You may already have heard of DApps (Decentralized Apps). A smart contract can also be thought of as a DApp because it is both an application and is decentralized. In fact, DApps consist of a web-based front-end that sits on top of a smart contract. A DApp is decentralized because of the properties of the smart contract; a copy of the DApp s smart contract is stored on each node in the blockchain. Smart contracts can be invoked when a transaction is added to a blockchain and, according to how they are programmed, smart contracts can redistribute the funds sent in the transaction. Note: Given a specific input, the output of the smart contract is the same no matter which node it is run on. Because of this property, smart contracts are deterministic. Smart contracts are also capable of storing (persisting) data. If they could not do this, it would be impossible for them to achieve the required level of sophistication. You might be asking a question at this point: if a smart contract is stored on every node in the blockchain but gets run on random nodes, what happens to any data it stores when running? The answer is that any data stored by a smart contract is broadcast across all nodes on the network. A smart contract on any node has up-to-date copies of its database. Note: When a new smart contract or a transaction invoking a smart contract is distributed across the network as part of a block, each node that receives the block runs the smart contract during the consensus building process. If a smart contract is found to be invalid (non-deterministic for example), the smart contract is not deployed Using.NET for smart contracts The most important aspect of the implementation of Stratis smart contracts is they use real.net, which is to say.net Core is used to execute them. The Stratis Full Node is also written in C# and the route of execution for both it 3

8 and and a Stratis smart contract is the same. Stratis smart contracts are not just using the C# syntax, they are using the full tried and tested C# package supplied by Microsoft. Because smart contracts must execute deterministically, they cannot use all capabilities of the C# language or all the.net Core libraries. The Stratis smart contracts suite includes a validation tool that checks for any non-deterministic elements in any smart contracts that you write Gas for Stratis smart contracts Smart contracts require gas to run. How much gas they need relates to how many instructions they contain. Gas is an additional expenditure to transaction fees. For example, if you send money to a smart contract, you must pay normal transaction fees and the cost in gas for any methods you call on the smart contract. Gas is separate from STRAT. Its relationship to STRAT is defined by strat = gas * gasprice. Note: As this this is an Alpha release, you will use test STRAT, which are referred to as TSTRAT during this document. 1.2 Uses of Smart Contracts This chapter contains some possible uses of smart contracts. The aim here is to inspire you to start writing your own smart contracts even if they begin life as basic versions of what might later become more sophisticated applications Financial uses of smart contracts When smart contracts are used for financial purposes, it is useful to think of them as AI wallets. Cryptocurrency can be sent to them and distributed to other users based on the logic contained within the smart contract. One example of a financial use of a smart contract is in an auction. Users can participate in the auction and make bids. The smart contract stores the bids that are made, and when the auction is over, it allows: 1. The owner of the smart contract to receive the highest bid as payment for the item. 2. Unsuccessful bidders to withdraw the bids they made. The Stratis smart contract Visual Studio Project Template contains a basic example of an auction. Later in this document, you will be given step-by-step instructions on how you can deploy and experiment with this example auction Smart contracts for voting Smart contracts can be used for voting. In this case financial transactions are substituted for votes. Once cast, the votes can be traced back to when they were cast but the identity of the voter remains secret. At the end of the election, the smart contract can publish the results. However, because the blockchain is an immutable public ledger, anyone can also go back and check the votes themselves. In addition, because the smart contract is also immutable and held on every node, its vote counting code can also be inspected by anyone Smart contracts in gaming Smart contracts can be used in the storing of statistics for tradable game entities such as a weapon or a hero. For example, they can record the history of the hero and level up the hero in respect to those achievements. The higher the 4 Chapter 1. Contents

9 level of the hero the more they can be traded for. The procedure held in the smart contract for levelling up the hero is transparent and so is the path the hero took to achieve their current level Smart contracts in delay repay schemes Smart contracts can be used in delay repay schemes. For example, they can be automatically used to handle delay repayment if a plane or train is delayed. The smart contract s owner can hold the amount paid for a ticket until a specific point in time, agreed by the customer, at which no refunds are possible. Meanwhile, the arrival times of vehicles is recorded digitally, and the smart contracts are automatically invoked with these timestamps. The smart contract checks the timestamps against the official timetables and pays compensation accordingly if any journey was late. 1.3 Deploying Your First Smart Contract This chapter takes you through deploying a smart contract, which simulates an auction. The smart contract is provided as a Visual Studio Project Template. As part of the deployment process, the smart contract is validated to ensure it does not contain any non-deterministic elements. Once deployed, a bid is then placed on the auction to test that the smart contract was deployed correctly. The steps taken when deploying the smart contract are as follows: 1. Download or clone the source. 2. Installing the Visual Studio Project Template. 3. Create a smart contracts project, which will include an auction smart contract and unit tests. 4. Validate the smart contract with the smart contract tool (SCT). 5. Run the smart contract enabled version of the full node. 6. Get the funds to deploy the auction smart contract and place a bid. 7. Build and deploy the smart contract. 8. Place a bid. 9. Check the bid has been stored on the test network. Note: This chapter assumes a Windows development environment. Stratis smart contracts can be developed on other platforms, and documentation to support this will be available soon Downloading the smart contract source First, download a copy of Microsoft Visual Studio if you don t have a copy already. This is the standard IDE for C# development and the Community Edition is available for free. Next, make sure you have the latest.net SDK installed. You can verify this by running dotnet --version on the command line. If you do not have the.net SDK installed, download and install it from here. Next, you must download or clone the latest alpha branch of the Stratis Smart Contract Enabled Full Node. This repository contains everything you need to run a Stratis full node that can sync and mine on a Stratis smart contract network. It also contains the sct tool, which validates and deploys contracts. git clone git checkout sc-alpha-latest 1.3. Deploying Your First Smart Contract 5

10 1.3.2 Installing the Visual Studio Project Template The Stratis smart contract Visual Studio Project Template provides an easy way to create a new smart contract project. It contains a template for a smart contract, unit tests, and references to appropriate NuGet packages. The template can be found on the Visual Studio marketplace Creating a smart contracts project To create a new smart contracts project, navigate to File > New > Project... and create a new Stratis SmartContract Project under Visual C#. This generates a new solution containing Auction.cs and some sample unit tests. Notice that Auction.cs just contains a C# class called Auction. Later, you will explore the individual properties and methods on this class in detail Validating your smart contract When you attempt to deploy a smart contract by including it in a transaction, it is tested to see if its C# code is correct and deterministic. Mining nodes carry out this testing before they include a smart contract transaction in a block. In addition, other nodes on the network attempt to validate any smart contracts that they find in any blocks they receive. If the smart contracts are not valid, the entire block is rejected. Therefore, you will want to know your smart contract meets the validation criteria before you try and deploy it. Stratis provides SCT (a command-line tool) for validating and building smart contracts. The SCT tool is located within the source code of the full node that was cloned earlier. Navigate to this source code directory, and then change into the SCT project directory: cd src/stratis.smartcontracts.tools.sct You are now going to validate the auction smart contract and request to see its byte code. When you begin writing your own smart contracts, you will also carry out this step for them before you deploy. Right click on your Auction.cs file tab in Visual Studio and click Copy Path. Then, back on the command line, use the validate command: dotnet run -- validate [PASTE_YOUR_PATH HERE] -sb You should see the following output: ====== Smart Contract Validation results for file [YOUR_FILE_PATH] ====== Compilation Result Compilation OK: True Format Validation Result Format Valid: True Determinism Validation Result Determinism Valid: True ByteCode 4D5A F... Congratulations! You have compiled your first smart contract in C#. The bytecode is a hexadecimal representation of the.net IL compiled for this contract and is all you need to deploy your contract on a network (provided you have a node running). To further understand why this tool is important, go back to your contract and add this line in the constructor: 6 Chapter 1. Contents

11 var test = DateTime.Now; And this line at the top of the Auction.cs file: using System; So why is the first line problematic inside a smart contract? Different nodes are going to execute the code at different times and because of this, they all receive a different result for DateTime.Now. If this value was persisted in some way, all of the nodes would receive a different outcome for the contract state and would fail to reach a consensus. Make sure you have saved Auction.cs and run the validation command again. SCT recognizes this non-deterministic call: ====== Smart Contract Validation results for file [YOUR_FILE_PATH] ====== Compilation Result Compilation OK: True Format Validation Result Format Valid: True Determinism Validation Result Determinism Valid: False.ctor: System.DateTime System.DateTime::get_Now() is non-deterministic. Now back out the non-deterministic code and resave. More about the SCT The SCT uses 3 commands: Command build deploy validate Description Builds a contract and outputs a dll. For testing purposes. Deploys a smart contract to the given node. Validates smart contracts for structure and determinism. The SCT provides further information on using these commands. For example, the following usage requests help on the validate command: dotnet run -- validate --help Running a smart contract enabled version of the Stratis full node To interact with the smart contract test network, you now need to build the smart contract daemon. This is the Stratis.StratisSmartContractsD project in the sc-alpha branch of the Stratis Smart Contract Enabled Full Node, which you either downloaded or cloned. When the project is built, run the daemon as follows: cd src/stratis.stratissmartcontractsd dotnet run -- -addnode= addnode= addnode= Adding the three nodes attempts to connect the daemon to the smart contract test network Deploying Your First Smart Contract 7

12 Note: The smart contract test network is a testing environment and its uptime may fluctuate. For the most up-to-date information on the test network status, join us on Discord: Support and Community Getting the funds to deploy smart contracts To deploy a smart contract you need funds to pay the transaction fees and the gas to run the smart contract. In this case, you are also going to test the smart contract out by placing a bid, which involves calling one of its methods. There is additional expenditure involved here because you must pay for: 1. The amount you are going to bid. 2. The transaction fees involved when making the bid (sending money to a deployed auction smart contract). 3. The gas to run the smart contract method. To get funds, you must first create a wallet and then request the funds. The next two subsections detail how to do this. Creating a wallet Because the smart contract API hasn t been integrated with any GUI wallets yet, you must use the API directly via Swagger. Whilst your node is running, navigate to To create a wallet, navigate to the Wallet section and use the /api/wallet/create call. You only need to specify a name and password in the request. For example: { } "name": "Satoshi", "password": "password" You now have a wallet containing some TSTRAT addresses. To see the addresses, use the /api/wallet/addresses call, which is also found in the Wallet section. You just need to specify your wallet name and an AccountName of account 0. Getting funds The easiest way to get some TSTRAT is use the smart contracts faucet. To receive 100 TSTRAT, specify a TSTRAT address from your wallet. Make a note of the address you use. Use this TSTRAT address for deploying and testing the smart contract. Alternatively, if you want to get more involved and earn some TSTRAT along the way, feel free to start mining! To begin mining, restart your node with an address from your wallet: dotnet run -- -addnode= addnode= addnode= mine=1 -mineaddress=[your_wallet_address] Use the TSTRAT address you use for the mine address when deploying and testing the smart contract Deploying the auction smart contract While you deploy your smart contract, it is important to remember that deploying a smart contract involves several steps: 8 Chapter 1. Contents

13 Compiling the contract. Validating the contract. Creating a transaction which contains the contract s code. Broadcasting the transaction to the network. From the command-line, you can use the deploy command to achieve all these steps: dotnet run -- deploy [PATH_TO_SMART_CONTRACT] -wallet [YOUR_ WALLET_NAME] -password [YOUR_PASSWORD] -fee sender=[your_wallet_address] - params=[constructor_params_if_required] As before, when you were validating the auction smart contract, you need to obtain the path to the Auction.cs file. However, because the Auction C# class contains a constructor parameter, durationblocks, you must pass this value as well. The durationblocks parameter specifies how many blocks are added to blockchain before the auction ends. In the following example, 20 blocks are added to the blockchain before the auction ends: dotnet run -- deploy PATH_TO_SMART_CONTRACT -wallet [YOUR_ WALLET_NAME] -password [YOUR_PASSWORD] -fee sender=[your_wallet_address] - params="10#20" A value of 20 is used because blocks are not confirmed until they are 5 blocks deep. Until the block which the smart contract is in has been confirmed, you cannot run the smart contract. You will notice that the value of 20 is preceeded by 10#. This information is part of the durationblocks constructor parameter. More information on specifying constructor parameters is given in Specifying smart contract constructor parameters. When you deploy the smart contract, you should also check the block height. To do this, find the Consensus.Height in the Node Stats of the full node output. Keep checking the block height. After Consensus.Height has incremented by 5, you can be sure the smart contract has been deployed. The tool returns the address of the contract if the contract was deployed successfully. Make sure you record this as you are going to use it when you place a bid. Specifying smart contract constructor parameters Smart contract parameters are serialized into a string. The format of each parameter is {0}#{1} where: {0} is an integer representing the Type of the serialized data and {1} is the serialized data itself. Serialized array values are separated by a dash - character. These params must be serialized into a string. The format of each parameter is {0}#{1}, where {0} is an integer representing the Type of the serialized data, and {1} is the serialized data itself. Multiple params must be specified in order and can be done like so: -param="7#abc" -param="8#123". Currently, only certain types of data can be serialized. Refer to the following table for the mapping between a type and its integer representation Deploying Your First Smart Contract 9

14 Table 1: Param Type Serialization Type Integer representing serialized Serialize to string type System.Boolean 1 System.Boolean.ToString() System.Byte 2 System.Byte.ToString() System.Byte[] 3 BitConverter.ToString() System.Char 4 System.Char.ToString() System.SByte 5 System.SByte.ToString() System.Short 6 System.Short.ToString() System.String 7 System.String System.UInt32 8 System.UInt32.ToString() NBitcoin.UInt160 9 NBitcoin.UInt160.ToString() System.UInt64 10 System.UInt64.ToString() Stratis.SmartContracts.Address 11 Stratis.SmartContracts.Address.ToString() System.Int64 12 System.Int64.ToString() Note: The requirement to pass in the Type is ugly, but it allows us to resolve overloaded methods easily. As a further example, imagine a smart contract which has a constructor with the following signature: public Token(ISmartContractState state, UInt160 owner, UInt64 supply, Byte[] secretbytes) In addition to the mandatory ISmartContractState, there are 3 parameters which need to be supplied. Assuming they have these values: UInt160 owner = 0x95D ccd9A1Fb4C813C2cb639 UInt64 supply = Byte[] secretbytes = { 0xAD, 0xBC, 0xCD } The serialized string representation of this data looks like this: The command for passing these params to sct looks like this: -param="9#0x95d ccd9a1fb4c813c2cb639" -param="10# " -param="3 #AD-BC-CD" Placing a bid on the auction smart contract You can use Swagger to place a bid on the auction smart contract you have deployed. Navigate to the SmartContracts section and use /api/smartcontracts/build-and-send-call. For example, the following usage places a bid of 10 TSTRAT. { "walletname": "[YOUR_WALLET_NAME]", "contractaddress": "[YOUR_CONTRACT_ADDRESS]", "methodname": "Bid", "amount": "10", "feeamount": "0.001", "password": "[YOUR_PASSWORD]", (continues on next page) 10 Chapter 1. Contents

15 } "sender": "[YOUR_WALLET_ADDRESS]", (continued from previous page) Once you have placed the bid, you will need to wait for the Consensus.Height to be incremented by another 5 blocks. At this point the bid transaction is confirmed. Finally, you can check the bid is stored on the test network Checking the bid has been stored on the test network Bids are persisted on each node in the network. You can use a Swagger call to check your bid has been stored on the test network. Navigate to the SmartContracts section and use /api/smartcontracts/storage. For the parameters, use the address of your deployed auction smart contract, the string HighestBid for the StorageKey, and Ulong for the DataType. A value of 10 should be returned. 1.4 The Auction Smart Contract This chapter takes a further look at the smart contract-specific parts of the Auction C# class. using Stratis.SmartContracts; public class Auction : SmartContract The first line in the contract is a reference to the Stratis.SmartContracts NuGet package. This package allows you to inherit from the SmartContract class and thereby provides subclasses with useful functionality such as sending funds, hashing, and saving data. If you are not using the Visual Studio template, you can create smart contracts just by including the Stratis.SmartContracts NuGet package in your project and inheriting from SmartContract. The only libraries that can be included in the current iteration of Stratis smart contracts are System, System.Linq and Stratis.SmartContracts. public Address Owner { get { return PersistentState.GetObject<Address>("Owner"); } private set { PersistentState.SetObject<Address>("Owner", value); } } The Auction object has several properties which are structured in a similar way to the Owner property. To persist data in a smart contract, use PersistentState. Data can be persisted anywhere in the smart contract not just inside a property. However, persisting data inside properties makes the code inside your methods easier to read. The Address class is included as part of Stratis.SmartContracts. It is an abstraction over a series of strings that enables funds to be sent to addresses. public ISmartContractMapping<ulong> ReturnBalances { get { (continues on next page) 1.4. The Auction Smart Contract 11

16 } } return PersistentState.GetMapping<ulong>("ReturnBalances"); (continued from previous page) PersistentState.GetMapping returns a dictionary-like structure for storage. Using a standard.net dictionary would require serializing and deserializing all the dictionary data every time it was updated. For dictionaries with thousands of entries (think balances of a token contract), this would require a significant amount of processing. ISmartContractMapping instead stores individual values directly into the underlying PersistentState. If you require lists of information, you also have access to ISmartContractList and PersistentState. GetList. public Auction(ISmartContractState smartcontractstate, ulong durationblocks) : base(smartcontractstate) { Owner = Message.Sender; EndBlock = Block.Number + durationblocks; HasEnded = false; } The contract constructor gets run when the contract is created for the first time. Contracts must override the base class constructor and inject ISmartContractState, which must be the first parameter of the constructor. Other parameters should be positioned after this parameter. The Message and Block objects are read-only properties on the SmartContract class which the Auction class inherits from. These properties provide access to information about the current context that a contract call is executing in. For example: block numbers, the address that called the contract, etc. Assigning a value to Owner, EndBlock, and HasEnded saves the values in PersistentState via their property setters. Setting Owner is a very common pattern when developing smart contracts and gives extra functionality to the creator of the contract. You will notice that in the AuctionEnd method, funds are sent to Owner. The Assert method, inherited from SmartContract, provides a simple way to reject contract executions that don t meet certain criteria. In this case, we re using it to reject any further execution when the message sender doesn t have a balance in our contract. The TransferFunds method, also inherited from SmartContract, enables the sending of funds to a specific address. This will send funds to ordinary addresses or contracts. A third parameter can be specified as input for this method to give more information about the method etc. to call on a contract. public bool Withdraw() { ulong amount = ReturnBalances[Message.Sender]; Assert(amount > 0); ReturnBalances[Message.Sender] = 0; ITransferResult transferresult = TransferFunds(Message.Sender, amount); if (!transferresult.success) ReturnBalances[Message.Sender] = amount; return transferresult.success; } There are a few more methods in the Auction class, but the final method to look at is Withdraw. This method checks whether the caller has a balance to withdraw from. If they do, this balance will be deducted from the smart contract state and they will be sent the funds. Note: You may be wondering why there is a Withdraw method at all. Why not just transfer the funds to their owner as soon as they become available? The reason is because the owner of these funds could be another smart contract that 12 Chapter 1. Contents

17 cannot be controlled. Sending the funds back to such a contract would potentially call unknown code using another user s funds. Therefore, the Withdraw pattern is very common in smart contracts. If users call a contract, that contract execution should never execute an untrusted smart contract s code. 1.5 Testing Stratis Smart Contracts are unit-testable in the same way as any other C# class. Unit tests can be written with the testing framework of your choice. Tests can be developed and debugged with Visual Studio s step-through debugger. Note: While contracts are fully testable, the available testing utilities are still primitive. Future versions of smart contracts will enable testing on top of a local test blockchain with resource tracking code injected The Basics The smart contract Visual Studio Project Template, which contains the Auction smart contract, also contains tests for this contract. The tests described here verify that your smart contract logic executes as intended before you deploy it to a live network. The tests inside the template use the Microsoft.VisualStudio.TestTools.UnitTesting library, which may be familiar to C# developers: [TestClass] defines a class in which tests are defined. [TestInitialize] is used to mark a method to be run before tests execute, most commonly to set up some testing context. [TestMethod] marks the actual tests to be run. The static class Assert provides access to a range of methods to validate the results of whatever execution you perform inside your tests. To run the tests together, right click on [TestClass] and select Run Tests in Visual Studio. To run tests individually, right click on the individual method and select Run Tests. Once clicked, the solution will take a couple of seconds to build and then the Test Explorer will open. You should see your tests listed next to a green tick, which indicates the tests have passed. You can also debug contract execution in Visual Studio. If breakpoints are set in the Auction smart contract methods and you then right click and select Debug Tests on the test methods, you will reach any breakpoints set in the methods being tested. You can then inspect the current state of the contract and step through execution as with any other C# application State Injection A Stratis smart contract s constructor has a single mandatory parameter: public ExampleContract(ISmartContractState state). Contextual blockchain state is injected into this parameter at contract execution time. Because state is abstracted behind the ISmartContractState interface, it allows any possible state of the blockchain to be mocked and injected while unit testing is being carried out. The ISmartContractState interface contains these members: IBlock Block - Contains information about the block in which the smart contract transaction has been included. IMessage Message - Contains information about the contract invocation environment. IPersistentState PersistentState - Represents the persistent storage available to a contract Testing 13

18 IGasMeter GasMeter - Represents an object used to measure the amount of gas consumed during contract execution. IInternalTransactionExecutor InternalTransactionExecutor - Represents an executor used to process transactions generated from within the contract. IInternalHashHelper InternalHashHelper - Provides hashing functions to the contract. Func<ulong> GetBalance - A function which provides the current balance of the contract. A unit test can define its own representations of these interfaces and then inject them into the contract under test An Example Stepping through the TestBidding() method from the template should help you understand the basic approach to unit testing your contracts with a mock contract state. var auction = new Auction(SmartContractState, Duration); The first step to testing your contracts is initialising them. A TestSmartContractState object is injected into the Auction object. This TestSmartContractState object is an implementation of the same ISmartContractState interface that is injected when smart contracts are initialised on-chain. The only difference is that in this case all of the properties can be set by you. This is really useful if you want to explicitly target scenarios in your contract s execution. Assert.IsNull(SmartContractState.PersistentState.GetObject<Address>("HighestBidder"). Value); Assert.AreEqual(0uL, SmartContractState.PersistentState.GetObject<ulong>("HighestBid ")); These calls check that the world state is as expected after contract instantiation. In other words, they check that no highest bidder has yet been set and that the current highest bidder is set to 0, which is exactly what the constructor is set to do. ((TestMessage)SmartContractState.Message).Value = 100; auction.bid(); The first line here is an example of setting the state to represent exact scenarios that you wish to test. 1.6 Support and Community If you re having issues with any part of the process, want to provide us with any feedback, or just want to drop by and show us something cool you made, join us in the #smartcontracts room on Discord Report a Bug You can also raise any issues you have along the way in the Stratis Full Node github repository. Please apply the smart-contracts label to any issues that are specific to smart contracts. For anything urgent, feel free to contact us in the #smartcontracts channel in Discord. 14 Chapter 1. Contents

19 1.7 Appendix - Future Enhancements to Stratis Smart Contracts We are committed to continually improving Stratis smart contracts. Future enhancements include: Optimizing compiler output to reduce the size of contracts stored on-chain. Improvements to the validation output. For example, plans exist to show the line where non-deterministic code has been detected. Further integration with Microsoft Visual Studio so live feedback is provided during coding. This will identify potential bugs, non-deterministic code, and also suggest improvements for the smart contract. Support for event and logs to facilitate communication between smart contracts and their user interfaces. Support for a web3-like front-end library to facilitate communication between smart contracts and web applications. Improvements to the testing utilities. This includes the ability to auto-generate a blockchain state and the ability to measure the gas required for a smart contract method call. Standard interfaces for common smart contracts. This includes an ERC20-type token interface. Native F# support. A self-destruct functionality for smart contracts. NuGet distribution for common smart contract libraries. 1.8 Appendix - Gas Prices Smart contract execution costs the gas price (in satoshis) multiplied by the gas used. The gas price and the maximum amount of gas to be used are set at the transaction level. Gas Price: Minimum: 1. Maximum: Gas Limit: Minimum: Maximum: For most transactions, we would recommend setting your gas price to 1 and the gas limit to Note: The gas costs below are subject to change but we expect that the total cost for interacting with or creating smart contracts should not exceed ~$5 USD. Table 2: Gas Costs Operation Cost Description Base Cost 1000 The cost for executing any smart contract transaction. Contract Creation 1000 The cost for creating a new smart contract. Cost Instruction Cost 1 The cost for executing each CIL instruction. System Method 5 The cost for calling any system method. Call Cost Storage Cost 10 The cost for storing 1 byte via PersistentState. This currently includes (byte) both keys and values every time a value is set Appendix - Future Enhancements to Stratis Smart Contracts 15

20 Note: Base cost and contract creation cost are affected by changes in the gas price too. For example, if the gas price is set to 2, the base cost and contract creation cost rise to System method calls always remain free. 16 Chapter 1. Contents

Technical White Paper of. MOAC Mother of All Chains. June 8 th, 2017

Technical White Paper of. MOAC Mother of All Chains. June 8 th, 2017 Technical White Paper of MOAC Mother of All Chains June 8 th, 2017 [Abstract] MOAC is to design a scalable and resilient Blockchain that supports transactions, data access, control flow in a layered structure.

More information

Gnosis Safe Documentation. Gnosis

Gnosis Safe Documentation. Gnosis Gnosis Aug 14, 2018 Content 1 Learn more about Gnosis Safe 3 1.1 Smart Contract Overview........................................ 3 1.2 Services Overview............................................ 10

More information

Next Paradigm for Decentralized Apps. Table of Contents 1. Introduction 1. Color Spectrum Overview 3. Two-tier Architecture of Color Spectrum 4

Next Paradigm for Decentralized Apps. Table of Contents 1. Introduction 1. Color Spectrum Overview 3. Two-tier Architecture of Color Spectrum 4 Color Spectrum: Next Paradigm for Decentralized Apps Table of Contents Table of Contents 1 Introduction 1 Color Spectrum Overview 3 Two-tier Architecture of Color Spectrum 4 Clouds in Color Spectrum 4

More information

Privacy-Enabled NFTs: User-Mintable, Non-Fungible Tokens With Private Off-Chain Data

Privacy-Enabled NFTs: User-Mintable, Non-Fungible Tokens With Private Off-Chain Data Privacy-Enabled NFTs: User-Mintable, Non-Fungible Tokens With Private Off-Chain Data Philip Stehlik Lucas Vogelsang August 8, 2018 1 Abstract Privacy-enabled NFTs (non-fungible tokens) are user-mintable

More information

Lecture 10. A2 - will post tonight - due in two weeks

Lecture 10. A2 - will post tonight - due in two weeks Lecture 10 A2 - will post tonight - due in two weeks The DAO - $72M USD in Ether Decentralized Dragon's Den or Shark's Tank A pot of money that you could contribute to and receive voting shares for You

More information

OpenbankIT: a banking platform for e- money management based on blockchain technology

OpenbankIT: a banking platform for e- money management based on blockchain technology OpenbankIT: a banking platform for e- money management based on blockchain technology Dr. Pavel Kravchenko, Sergiy Vasilchuk, Bohdan Skriabin pavel@distributedlab.com, vsv@atticlab.net, bohdan@distributedlab.com

More information

Hawk: The Blockchain Model of Cryptography and Privacy-Preserving Smart Contracts. Yashar Dehkan Asl

Hawk: The Blockchain Model of Cryptography and Privacy-Preserving Smart Contracts. Yashar Dehkan Asl Hawk: The Blockchain Model of Cryptography and Privacy-Preserving Smart Contracts Yashar Dehkan Asl Chapter I Introduction Decentralized Cryptocurrencies: Such as Bitcoin and altcoins are getting more

More information

This walkthrough assumes you have completed the Getting Started walkthrough and the first lift and shift walkthrough.

This walkthrough assumes you have completed the Getting Started walkthrough and the first lift and shift walkthrough. Azure Developer Immersion In this walkthrough, you are going to put the web API presented by the rgroup app into an Azure API App. Doing this will enable the use of an authentication model which can support

More information

Who wants to be a millionaire? A class in creating your own cryptocurrency

Who wants to be a millionaire? A class in creating your own cryptocurrency DEVNET-3626 Who wants to be a millionaire? A class in creating your own cryptocurrency Tom Davies, Sr. Manager, DevNet Sandbox Vallard Benincosa, Software Engineer Cisco Spark How Questions? Use Cisco

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

ZILLIQA / ZILIKƏ/ NEXT GEN HIGH-THROUGHPUT BLOCKCHAIN PLATFORM DONG XINSHU, CEO JIA YAOQI, BLOCKCHAIN ZILLIQA.

ZILLIQA / ZILIKƏ/ NEXT GEN HIGH-THROUGHPUT BLOCKCHAIN PLATFORM DONG XINSHU, CEO JIA YAOQI, BLOCKCHAIN ZILLIQA. ZILLIQA / ZILIKƏ/ NEXT GEN HIGH-THROUGHPUT BLOCKCHAIN PLATFORM DONG XINSHU, CEO JIA YAOQI, BLOCKCHAIN ARCHITECT SCALABILITY OF PUBLIC BLOCKCHAIN BITCOIN 7 TX/S ETHEREUM 10 TX/S VISA 8000 TX/S SOME EXISTING

More information

Ethereum Consortium Network Deployments Made Easy Christine Avanessians Senior Program Manager

Ethereum Consortium Network Deployments Made Easy Christine Avanessians Senior Program Manager Ethereum Consortium Network Deployments Made Easy Christine Avanessians Senior Program Manager Update History October 19, 2016: The document was revised to reflect the most recent update to the template.

More information

Ethereum Consortium Blockchain in Azure Marketplace Christine Avanessians Senior Program Manager

Ethereum Consortium Blockchain in Azure Marketplace Christine Avanessians Senior Program Manager Ethereum Consortium Blockchain in Azure Marketplace Christine Avanessians Senior Program Manager Overview The next phase of our support of blockchain on Microsoft Azure is the release of the Ethereum Consortium

More information

Design Book of TRON Architecture

Design Book of TRON Architecture Design Book of TRON Architecture Catalog Design Book of TRON Architecture Architecture Consenus Storage Structure Digital Ass et Module Smart Contract/Vitual Machine Third Party Application Token Migration

More information

Storing Data in Objects

Storing Data in Objects Storing Data in Objects Rob Miles Department of Computer Science 28d 08120 Programming 2 Objects and Items I have said for some time that you use objects to represent things in your problem Objects equate

More information

BITCOIN PROTOCOL & CONSENSUS: A HIGH LEVEL OVERVIEW

BITCOIN PROTOCOL & CONSENSUS: A HIGH LEVEL OVERVIEW BITCOIN PROTOCOL & CONSENSUS: A HIGH LEVEL OVERVIEW Rustie Lin Wang Move the area1 over the image a little inside and then right click, replace image to change the background. (and delete this box while

More information

Blockchain! What consultants should know about it. Daniel

Blockchain! What consultants should know about it. Daniel Blockchain! What consultants should know about it. Daniel Karzel @ Workshop Overview Quick overview of what is planned for the workshop. What you get out of this workshop Workshop goals Understand what

More information

Saikat Banerjee Page 1

Saikat Banerjee Page 1 1. What s the advantage of using System.Text.StringBuilder over System.String? StringBuilder is more efficient in the cases, where a lot of manipulation is done to the text. Strings are immutable, so each

More information

Technical White Paper. Cube Engine Version 1.0

Technical White Paper. Cube Engine Version 1.0 Technical White Paper Cube Engine Version 1.0 Last Updated: Feb 06. 2018 1 Contents 1. Summary 1) Introduction 2) Overview 2. Features of Cube Chain 1) Cubing 2) Indexing Block 3) Statistics Block 4) Escrow

More information

COP 3330 Final Exam Review

COP 3330 Final Exam Review COP 3330 Final Exam Review I. The Basics (Chapters 2, 5, 6) a. comments b. identifiers, reserved words c. white space d. compilers vs. interpreters e. syntax, semantics f. errors i. syntax ii. run-time

More information

The technical notes represented on the following pages are intended to describe and officially document the concepts behind NulleX Blockchain.

The technical notes represented on the following pages are intended to describe and officially document the concepts behind NulleX Blockchain. 1 The technical notes represented on the following pages are intended to describe and officially document the concepts behind NulleX Blockchain. This document provides and explains in detail the technical

More information

Rise Technology White Paper

Rise Technology White Paper Rise Technology White Paper Posted in White paper by Justin 1. Introduction 1. What is Rise We are Rise, a Lisk-based currency and distributed application platform heavily emphasizing security and ease

More information

XSN coin. TPoS Setup Guide. https://discord.gg/cyf5yca. https://xsncoin.io

XSN coin. TPoS Setup Guide. https://discord.gg/cyf5yca. https://xsncoin.io XSN coin TPoS Setup Guide https://discord.gg/cyf5yca https://xsncoin.io Contents Introduction... 3 What is TPoS?... 3 DISCLAIMER:... 4 How to be an Owner... 4 How to be a merchant... 5 Step 1. Controller

More information

SmartCash SmartNode SCRIPT Setup Guide v2.2. Windows 10. Date: 20/02/2018. By (Jazz) yoyomonkey

SmartCash SmartNode SCRIPT Setup Guide v2.2. Windows 10. Date: 20/02/2018. By (Jazz) yoyomonkey SmartCash SmartNode SCRIPT Setup Guide v2.2 Date: Introduction Welcome to this step by step guide that will take you through the process of creating your own SmartCash SmartNode. This guide is aimed at

More information

Smalltalk 3/30/15. The Mathematics of Bitcoin Brian Heinold

Smalltalk 3/30/15. The Mathematics of Bitcoin Brian Heinold Smalltalk 3/30/15 The Mathematics of Bitcoin Brian Heinold What is Bitcoin? Created by Satoshi Nakamoto in 2008 What is Bitcoin? Created by Satoshi Nakamoto in 2008 Digital currency (though not the first)

More information

Blockchain-enabled peer-to-peer marketplaces

Blockchain-enabled peer-to-peer marketplaces Blockchain-enabled peer-to-peer marketplaces Creating the infrastructure and UX to enable mainstream commercial transactions on Ethereum Matthew Liu Cofounder Company Overview 2 Origin will enable decentralized

More information

C# Programming for Developers Course Labs Contents

C# Programming for Developers Course Labs Contents C# Programming for Developers Course Labs Contents C# Programming for Developers...1 Course Labs Contents...1 Introduction to C#...3 Aims...3 Your First C# Program...3 C# The Basics...5 The Aims...5 Declaring

More information

For further information about the GRID token sale, please visit gridplus.io/token-sale.

For further information about the GRID token sale, please visit  gridplus.io/token-sale. 1 1 Introduction Thank you for your interest in purchasing GRID tokens. The following information has been organized to help you complete your purchase using MyEtherWallet, Mist, or MetaMask. For further

More information

WOLFCOIN MASTERNODE MANUAL

WOLFCOIN MASTERNODE MANUAL WOLFCOIN MASTERNODE MANUAL Contents Introduction... 3 About Wolfcoin Blockchain... 3 Download the Wolfcoin Wallet... 4 Installation of your Wallet... 5 Make a receiving address... 12 Closing the Wolfcoin

More information

GENESIS VISION NETWORK

GENESIS VISION NETWORK GENESIS VISION NETWORK Contents 1. Description of the problem 7 11. Trust management 15 2. The problem with smart contracts 8 12. GVN Token 16 3. Centralised exchanges against decentralised 8 13. Deposit

More information

Whitepaper Rcoin Global

Whitepaper Rcoin Global Whitepaper Rcoin Global SUMMARY 1. Introduction 2. What is Rcoin Global? 3. Transactions 4. Hybrid Network Concept 5. Keepers 6. Incentive 7. Smart Contract Token 8. Token Distribution 9. Rcoin Global

More information

THE UNBREAKABLE CODE. NAVTECH DECENTRALISATION WHITEPAPER BETA RELEASE v0.9

THE UNBREAKABLE CODE. NAVTECH DECENTRALISATION WHITEPAPER BETA RELEASE v0.9 THE UNBREAKABLE CODE WHITEPAPER INDEX Executive Summary 3 Introduction 4 Problem Definition 5 High Level Solution 6 Core Technical Obstacles Safe Distribution of the Subchain 9 Protecting Users from Malicious

More information

Introduction to Cryptography in Blockchain Technology. December 23, 2018

Introduction to Cryptography in Blockchain Technology. December 23, 2018 Introduction to Cryptography in Blockchain Technology December 23, 2018 What is cryptography? The practice of developing protocols that prevent third parties from viewing private data. Modern cryptography

More information

ENEE 457: E-Cash and Bitcoin

ENEE 457: E-Cash and Bitcoin ENEE 457: E-Cash and Bitcoin Charalampos (Babis) Papamanthou cpap@umd.edu Money today Any problems? Cash is cumbersome and can be forged Credit card transactions require centralized online bank are not

More information

Lab Exercise Test First using JUnit

Lab Exercise Test First using JUnit Lunds tekniska högskola Datavetenskap, Nov, 2017 Görel Hedin/Ulf Asklund EDAF45 Programvaruutveckling i grupp projekt Lab Exercise Test First using JUnit Goal This lab is intended to demonstrate basic

More information

The World s first Public Chain for Decentralized NaaS (Network-as-a-Service)

The World s first Public Chain for Decentralized NaaS (Network-as-a-Service) The World s first Public Chain for Decentralized NaaS (Network-as-a-Service) Disclaimer Presentation and the information contained herein is not intended to be a source of advice or credit analysis with

More information

Hyperledger Quilt and Interledger Protocol. Nathan Aw - Technical Ambassador Edmund To - Organizer of Hyperledger Meetup Hong Kong

Hyperledger Quilt and Interledger Protocol. Nathan Aw - Technical Ambassador Edmund To - Organizer of Hyperledger Meetup Hong Kong Hyperledger Quilt and Interledger Protocol Nathan Aw - Technical Ambassador Edmund To - Organizer of Hyperledger Meetup Hong Kong Housekeeping Road Map of 2018 - More meet ups! Thank you to our sponsor

More information

Blockchain & Smart Contracts Introduction. Dr. Sebastian Bürgel

Blockchain & Smart Contracts Introduction. Dr. Sebastian Bürgel Blockchain & Smart Contracts Introduction Dr. Sebastian Bürgel Does the following make sense? State-of-the-Art Trade Finance (2017) http://blog.zuehlke.com/en/how-the-blockchain-can-disrupt-trade-finance/

More information

ICO Review: Raiden Network (RDN)

ICO Review: Raiden Network (RDN) ICO Review: Raiden Network (RDN) Scalable Transfers for Ethereum October 10, 2017 What is Raiden Network? Raiden is an payment network built on top of the Ethereum network. PAYMENT CHANNEL NETWORK It aims

More information

The power of Blockchain: Smart Contracts. Foteini Baldimtsi

The power of Blockchain: Smart Contracts. Foteini Baldimtsi The power of Blockchain: Smart Contracts Foteini Baldimtsi The Blockchain at the heart of a cryptocurrency Alice sends 2 John sends 1 Dave sends 5 to Bob to Eve to Alice Bob sends 1 Eve sends 4 to Dave

More information

PascalCoin Exchange Integration Guide. Compatible with version 4 of PascalCoin

PascalCoin Exchange Integration Guide. Compatible with version 4 of PascalCoin Exchange Integration Guide Compatible with version 4 of PascalCoin Introduction This document will explain how to integrate PascalCoin V4 into your exchange with the help of the inbuilt JSON RPC API. In

More information

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read) 1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?

More information

BBc-1 : Beyond Blockchain One - An Architecture for Promise-Fixation Device in the Air -

BBc-1 : Beyond Blockchain One - An Architecture for Promise-Fixation Device in the Air - BBc-1 : Beyond Blockchain One - An Architecture for Promise-Fixation Device in the Air - Kenji Saito and Takeshi Kubo {ks91 t-kubo}@beyond-blockchain.org Revision 0.1 October 31, 2017 1 Introduction Blockchain

More information

Pillar Token Code Review

Pillar Token Code Review Pillar Token Code Review July 14, 2017 Prepared By: Kshitish Balhotra Independent Reviewers Umesh Kushwaha, Bhavish Balhotra kshitish@dltlabs.io dltlabs.io Table of Contents I. Introduction... 2 II. Overview...

More information

COMPREHENSIVE LIST OF CASHLESS FAQs (GUESTS)

COMPREHENSIVE LIST OF CASHLESS FAQs (GUESTS) COMPREHENSIVE LIST OF CASHLESS FAQs (GUESTS) Credit Q. How do I top up my credit? You must create an account online and link your wristband to that account. You can also purchase your credit at the event

More information

Introduction to Fabric Composer

Introduction to Fabric Composer Introduction to Fabric Composer Anthony O Dowd odowda@uk.ibm.com @ajodowd 2017 2017 IBM Corporation IBM Corporation Page 1 Contents Concepts & Modelling Applications & Tools Integrating Existing Systems

More information

Security Audit of FuzeX Smart Contract This report is public. ChainSecurity Ltd. January 11, 2018

Security Audit of FuzeX Smart Contract This report is public. ChainSecurity Ltd. January 11, 2018 Security Audit of FuzeX Smart Contract This report is public. ChainSecurity Ltd. January 11, 2018 1 Contents 1 System Overview 3 1.1 TGE Overview................................. 4 1.2 Token Rewards.................................

More information

Technical Specifications for Platform Development

Technical Specifications for Platform Development Technical Specifications for Platform Development Contents 1. General Information about the Product... 2 2. Software Requirements... 3 2.1. Functional Requirements... 3 2.2. Server Requirements... 4 3.

More information

Master Node Setup Guide

Master Node Setup Guide Introduction Welcome to this step by step guide that will take you through the process of creating your own Masternode. This guide is aimed at the casual Windows 10 PC user who has purchased Satoshi Coin

More information

Wormhole: A Smart Contract Solution for Bitcoin Cash

Wormhole: A Smart Contract Solution for Bitcoin Cash Wormhole: A Smart Contract Solution for Bitcoin Cash Abstract Born at block height 478,558, Bitcoin Cash (BCH) has been dedicated to bringing a reliable electronic cash to the world and fulfilling Satoshi

More information

Blockchain for Enterprise: A Security & Privacy Perspective through Hyperledger/fabric

Blockchain for Enterprise: A Security & Privacy Perspective through Hyperledger/fabric Blockchain for Enterprise: A Security & Privacy Perspective through Hyperledger/fabric Elli Androulaki Staff member, IBM Research, Zurich Workshop on cryptocurrencies Athens, 06.03.2016 Blockchain systems

More information

7 The Integrated Debugger

7 The Integrated Debugger 7 The Integrated Debugger Your skill set for writing programs would not be complete without knowing how to use a debugger. While a debugger is traditionally associated with finding bugs, it can also be

More information

cchannel Generalized State Channel Specification

cchannel Generalized State Channel Specification cchannel Generalized State Channel Specification Celer Network Core Team May 27, 2018 cchannel of the Celer Network is a generalized state channel and sidechain suite that provides a framework to support

More information

POC Evaluation Guide May 09, 2017

POC Evaluation Guide May 09, 2017 POC Evaluation Guide May 09, 2017 This page intentionally left blank P r o p r i e t a r y a n d C o n f i d e n t i a l. 2 0 1 7 R F P M o n k e y. c o m L L C Page 2 CONTENTS Read Me First... 4 About

More information

Content. 1. SYSTEM Design Evolution: NULS 2.0 Microserver Platform - How is it Structured A. Design Reasoning and Explanation...

Content. 1. SYSTEM Design Evolution: NULS 2.0 Microserver Platform - How is it Structured A. Design Reasoning and Explanation... Content 1. SYSTEM Design Evolution: NULS 2.0 Microserver Platform - How is it Structured... 3 A. Design Reasoning and Explanation... 3 B. Plugin... 4 C. Microserver... 5 D. Service Library... 7 E. NULS

More information

DTX Token. Starter guide

DTX Token. Starter guide DTX Token Starter guide 2 Choosing for the DTX token to buy and sell sensor data enables you to perform real microtransactions on DataBroker DAO. Every beginning is difficult, but this step-by-step introduction

More information

Getting Started with the Ed-Fi ODS and Ed-Fi ODS API

Getting Started with the Ed-Fi ODS and Ed-Fi ODS API Getting Started with the Ed-Fi ODS and Ed-Fi ODS API Ed-Fi ODS and Ed-Fi ODS API Version 2.0 - Technical Preview January 2015 2014-2015 Ed-Fi Alliance, LLC. All rights reserved. Ed-Fi is a registered trademark

More information

Guide to a Successful Wanchain Token Contribution

Guide to a Successful Wanchain Token Contribution Guide to a Successful Wanchain Token Contribution 1. Check if your address is whitelisted Make sure you use the wallet address you provided during the whitelist process. The wallet must be one where you

More information

BLOCKCHAIN CADEC Pär Wenåker & Peter Larsson

BLOCKCHAIN CADEC Pär Wenåker & Peter Larsson BLOCKCHAIN CADEC 2018 - Pär Wenåker & Peter Larsson BITCOIN BITCOIN PAPER Posted 31/10 2008 Bitcoin v0.1 released Satoshi Nakamoto satoshi at vistomail.com Thu Jan 8 14:27:40 EST 2009 Previous message:

More information

Justification for Names and Optional Parameters

Justification for Names and Optional Parameters Justification for Names and Optional Parameters By Bill Wagner March 2012 Many developers ask why named and optional parameters were not added earlier to the C# language. As other languages have shown,

More information

Token White Paper. Global marketplace based on Block chain for small-scale business I ver P a g e

Token White Paper. Global marketplace based on Block chain for small-scale business I ver P a g e Token White Paper Global marketplace based on Block chain for small-scale business 1 P a g e 2018 I ver. 1.0 Contents Qatar Coin Token 3 Contents 4 1. What is QatarCoin 5 2. What is a digital currency

More information

STEPS TO REGISTERING FOR OUR ONLINE AUCTIONS:

STEPS TO REGISTERING FOR OUR ONLINE AUCTIONS: STEPS TO REGISTERING FOR OUR ONLINE AUCTIONS: Thank you for your interest in our Online Auctions! We offer a great variety of items - The registration process is easy, just follow these steps. Once you

More information

FREQUENTLY ASKED QUESTIONS

FREQUENTLY ASKED QUESTIONS FREQUENTLY ASKED QUESTIONS In order to better assist you with the transition to our new home banking service, we wanted to provide you with a list of anticipated questions and things that may need your

More information

Lecture 3. Introduction to Cryptocurrencies

Lecture 3. Introduction to Cryptocurrencies Lecture 3 Introduction to Cryptocurrencies Public Keys as Identities public key := an identity if you see sig such that verify(pk, msg, sig)=true, think of it as: pk says, [msg] to speak for pk, you must

More information

QIIBEE Security Audit

QIIBEE Security Audit PUBLIC QIIBEE Security Audit of QBX TOKEN Smart Contracts June 28, 2018 Produced for by Table Of Content Foreword...................................................... 1 Executive Summary................................................

More information

IntForex demonstration bank account list IntForex demonstration rates IntForex demonstration rates... 22

IntForex demonstration bank account list IntForex demonstration rates IntForex demonstration rates... 22 Table of Contents int-forex.com Home screen... 3 IntForex registration... 4 IntForex activation... 6 IntForex login... 8 IntForex home... 8 IntForex exchange rates... 9 IntForex client functions... 10

More information

COPYRIGHTED MATERIAL. 1Hello ios! A Suitable Mac. ios Developer Essentials

COPYRIGHTED MATERIAL. 1Hello ios! A Suitable Mac. ios Developer Essentials 1Hello ios! Hello and welcome to the exciting world of ios application development. ios is Apple s operating system for mobile devices; the current version as of writing this book is 5.0. It was originally

More information

COEN 241 Term Project. A Blockchain-based Cloud Service

COEN 241 Term Project. A Blockchain-based Cloud Service COEN 241 Term Project A Blockchain-based Cloud Service Submitted By : Team 2 Xiao Zhu, Yali Zhang Instructor : Prof. Ming Hwa Wang Santa Clara University Preface This project identifies the difficulties

More information

Discover how to get up and running with the Java Development Environment and with the Eclipse IDE to create Java programs.

Discover how to get up and running with the Java Development Environment and with the Eclipse IDE to create Java programs. Java SE11 Development Java is the most widely-used development language in the world today. It allows programmers to create objects that can interact with other objects to solve a problem. Explore Java

More information

nacelle Documentation

nacelle Documentation nacelle Documentation Release 0.4.1 Patrick Carey August 16, 2014 Contents 1 Standing on the shoulders of giants 3 2 Contents 5 2.1 Getting Started.............................................. 5 2.2

More information

Active Planning Committee John Lindsay, Patent Attorney Tony Schuman, Investment Advisor Todd Russell, Gov t Contract Opportunities

Active Planning Committee John Lindsay, Patent Attorney Tony Schuman, Investment Advisor Todd Russell, Gov t Contract Opportunities Agenda 11:30-11:45 Check-In, networking 11:45-12:45 12:45 Announcements, Networking Active Planning Committee John Lindsay, Patent Attorney Tony Schuman, Investment Advisor Todd Russell, Gov t Contract

More information

Public Wallet Interface for Ripple

Public Wallet Interface for Ripple CS 795 Blockchain Technologies CS 795 Authors: May 15, 2017 Contents 1 Abstract 2 2 Introduction 3 3 Program Design Architecture 6 4 Functionality 7 5 Preview 10 6 In-comparison with other wallets 13 7

More information

NEW TOKEN SWAP INSTRUCTIONS For action after July 23, 2018.

NEW TOKEN SWAP INSTRUCTIONS For action after July 23, 2018. 1 NEW TOKEN SWAP INSTRUCTIONS For action after July 23, 2018. www.sophiatx.com 2 Table of contents 1. Introduction 2. Prerequesites 3. Generate a new SPHTX keypair (SophiaTX new Wallet) 4. Register the

More information

02 Features of C#, Part 1. Jerry Nixon Microsoft Developer Evangelist Daren May President & Co-founder, Crank211

02 Features of C#, Part 1. Jerry Nixon Microsoft Developer Evangelist Daren May President & Co-founder, Crank211 02 Features of C#, Part 1 Jerry Nixon Microsoft Developer Evangelist Daren May President & Co-founder, Crank211 Module Overview Constructing Complex Types Object Interfaces and Inheritance Generics Constructing

More information

Chapter 13. Digital Cash. Information Security/System Security p. 570/626

Chapter 13. Digital Cash. Information Security/System Security p. 570/626 Chapter 13 Digital Cash Information Security/System Security p. 570/626 Introduction While cash is used in illegal activities such as bribing money laundering tax evasion it also protects privacy: not

More information

User Guide. Join us on

User Guide.  Join us on User Guide www.neopost.ca Join us on TABLE OF CONTENTS Getting started Hardware and subscription requirements 4 PC requirements - browsers 4 Activating the application 5 Weighing your items Get weight

More information

CS112 Lecture: Defining Instantiable Classes

CS112 Lecture: Defining Instantiable Classes CS112 Lecture: Defining Instantiable Classes Last revised 2/3/05 Objectives: 1. To describe the process of defining an instantiable class 2. To discuss public and private visibility modifiers. Materials:

More information

NON-TECHNICAL WHITEPAPER Version 1.0

NON-TECHNICAL WHITEPAPER Version 1.0 NON-TECHNICAL WHITEPAPER Version 1.0 Abstract Decentralization in Cryptocurrency Standard blockchain environments contain many centralization vulnerabilities, such as monolithic development, consensus

More information

Up and Running Software The Development Process

Up and Running Software The Development Process Up and Running Software The Development Process Success Determination, Adaptative Processes, and a Baseline Approach About This Document: Thank you for requesting more information about Up and Running

More information

Elphyrecoin (ELPH) a Private, Untraceable, ASIC-Resistant CryptoCurrency Based on CryptoNote

Elphyrecoin (ELPH) a Private, Untraceable, ASIC-Resistant CryptoCurrency Based on CryptoNote Elphyrecoin (ELPH) a Private, Untraceable, ASIC-Resistant CryptoCurrency Based on CryptoNote This is the First Version of the Elphyrecoin s White Paper Please Check the Website for Future Updates White

More information

Data Structures (list, dictionary, tuples, sets, strings)

Data Structures (list, dictionary, tuples, sets, strings) Data Structures (list, dictionary, tuples, sets, strings) Lists are enclosed in brackets: l = [1, 2, "a"] (access by index, is mutable sequence) Tuples are enclosed in parentheses: t = (1, 2, "a") (access

More information

A Quick Tour GETTING STARTED WHAT S IN THIS CHAPTER?

A Quick Tour GETTING STARTED WHAT S IN THIS CHAPTER? 1 A Quick Tour WHAT S IN THIS CHAPTER? Installing and getting started with Visual Studio 2012 Creating and running your fi rst application Debugging and deploying an application Ever since software has

More information

KINGSTON COIN VPS MASTERNODE SETUP GUIDE

KINGSTON COIN VPS MASTERNODE SETUP GUIDE KINGSTON COIN VPS MASTERNODE SETUP GUIDE ** THIS GUIDE ASSUMES YOU HAVE PURCHASED A VPS THROUGH A SERVICE LIKE DIGITALOCEAN. COM OR VULTR.COM AND HAVE CONNECTED TO YOUR VPS THROUGH SSH/TERMINAL** STEP

More information

An Analysis of Atomic Swaps on and between Ethereum Blockchains Research Project I

An Analysis of Atomic Swaps on and between Ethereum Blockchains Research Project I An Analysis of Atomic Swaps on and between Ethereum Blockchains Research Project I Master of System and Network Engineering Informatics Institute, University of Amsterdam Peter Bennink Lennart van Gijtenbeek

More information

This tutorial is aimed to give you a crisp understanding of the process of building your own blockchain.

This tutorial is aimed to give you a crisp understanding of the process of building your own blockchain. i About the Tutorial Blockchain is the current buzz that is dominating the software development trends. The development and designing of Blockchain involves three major components: client, miner and blockchain.

More information

MyCreditChain FAQ. Anyone can download and use the MCC App from the App Store. The procedure is

MyCreditChain FAQ. Anyone can download and use the MCC App from the App Store. The procedure is MyCreditChain FA How can I join the network? Individual Anyone can download and use the MCC App from the App Store. The procedure is following. First, download the Wallet App, and follow KYC according

More information

A SYSTEM FOR ENABLING SHORT-TERM FINANCING

A SYSTEM FOR ENABLING SHORT-TERM FINANCING A SYSTEM FOR ENABLING SHORT-TERM FINANCING 5 The present invention relates generally to a system and method for enabling short-term financing, and finds particular, although not exclusive, utility in invoice

More information

TOKEN SWAP FAQ. For action before July 23, 2018.

TOKEN SWAP FAQ. For action before July 23, 2018. TOKEN SWAP FAQ For action before July 23, 2018. Thank you very much for all your questions so far. It really helps to improve the explanation of the process. If you are not sure about any step from the

More information

What is NPP, Osko and PayID?

What is NPP, Osko and PayID? What is NPP, Osko and PayID? The New Payment Platform (NPP) is a new way of making payments that is: Fast You can send funds to anyone in real-time. Easy You can send funds to a PayID (such as an email

More information

CampMaster. Users Guide Sagamore Council. Table of Contents. CampMaster. How to Create an Account... 1 Making a Reservation... 2

CampMaster. Users Guide Sagamore Council. Table of Contents. CampMaster. How to Create an Account... 1 Making a Reservation... 2 Users Guide Sagamore Council Table of Contents How to Create an Account... 1 Making a Reservation... 2 Making a Payment/Shopping Cart...5 Scheduling My Courses.. 7 What is? was formed to assist BSA councils

More information

Defining the Ethereum Virtual Machine for Interactive Theorem Provers

Defining the Ethereum Virtual Machine for Interactive Theorem Provers Defining the Ethereum Virtual Machine for Interactive Theorem Provers Ethereum Foundation Workshop on Trusted Smart Contracts Malta, Apr. 7, 2017 1/32 Outline 1 2 3 Remaining Problems 4 2/32 Outline 1

More information

Introduction to Blockchain

Introduction to Blockchain Diogo Trentini e Lauro Gripa Neto Introduction to Blockchain www.magrathealabs.com source: Scott Adams' Dilbert source: Gartner Inc. SUMMARY 1. 2. 3. 4. 5. Introduction Theoretical concepts Applications

More information

Modern Requirements4TFS 2018 Update 1 Release Notes

Modern Requirements4TFS 2018 Update 1 Release Notes Modern Requirements4TFS 2018 Update 1 Release Notes Modern Requirements 6/22/2018 Table of Contents 1. INTRODUCTION... 3 2. SYSTEM REQUIREMENTS... 3 3. APPLICATION SETUP... 3 GENERAL... 4 1. FEATURES...

More information

New user introduction to Attend

New user introduction to Attend 1 New user introduction to Attend 1. Sign up to Attend... 2 2. First Steps Create a Course... 2 3. Sharing your course... 4 4. Viewing the course participants... 5 5. Create a new member of Staff... 6

More information

Sage Construction Anywhere Setup Guide

Sage Construction Anywhere Setup Guide Sage Construction Anywhere Setup Guide Sage 100 Contractor Sage University This is a publication of Sage Software, Inc. Copyright 2014 Sage Software, Inc. All rights reserved. Sage, the Sage logos, and

More information

SmartCash SmartNode Setup Guide v1.2. Windows 10. Date: 13/01/2018. By (Jazz) yoyomonkey

SmartCash SmartNode Setup Guide v1.2. Windows 10. Date: 13/01/2018. By (Jazz) yoyomonkey SmartCash SmartNode Setup Guide v1.2 Date: Introduction Welcome to this step by step guide that will take you through the process of creating your own SmartCash SmartNode. This guide is aimed at the casual

More information

BLOCKCHAIN Blockchains and Transactions Part II A Deeper Dive

BLOCKCHAIN Blockchains and Transactions Part II A Deeper Dive BLOCKCHAIN Blockchains and Transactions Part II A Deeper Dive www.blockchaintrainingalliance.com Blockchain Page 3 Blockchain is NOT Bitcoin Page 4 Transactions Page 5 Multi-Signature Addresses An Address

More information

SmartCash SmartNode Setup Guide V1.2 Windows 10 13/01/2018 By (Jazz) yoyomonkey Page 1

SmartCash SmartNode Setup Guide V1.2 Windows 10 13/01/2018 By (Jazz) yoyomonkey Page 1 SmartCash SmartNode Setup Guide v1.2 Date: Introduction Welcome to this step by step guide that will take you through the process of creating your own SmartCash SmartNode. This guide is aimed at the casual

More information

Ergo platform. Dmitry Meshkov

Ergo platform. Dmitry Meshkov Ergo platform Dmitry Meshkov Prehistory Motivation Theory Practice Provably secure 1000 currencies New features Ad-hoc solutions Impractical Security issues Motivation Theory Provably secure New features

More information

Adding Contracts to C#

Adding Contracts to C# Adding Contracts to C# Peter Lagace ABSTRACT Design by contract is a software engineering technique used to promote software reliability. In order to use design by contract the selected programming language

More information