Trade on the world's fastest decentralised digital asset exchange

home link https://wavesplatform.com/

reference material Whitepaper.pdf


Exchanges that listed the coin
To be released
Project introduction

The Waves platform provides a shared infrastructure to transform the DNA of entrepreneurship around the world and to provide easy-to-use, high-performance tools that enable the block chain to benefit everyone and their organizations from the platform.

Executives and partners
There is no executive team information at this time
Please leave a message of support for the team

There is no partner information at this time
Please leave a message of support for the team

go to leave a message

Latest News

There is no news posted at the moment
Please leave a message of support for the team

go to leave a message


Waves Signer enables cross-...

The Waves ecosystem has made a major step forward, making all of its dApps cross-platform and mobile-friendly, thanks to new functionality provided by Waves Signer.Waves Signer is a JavaScript library that facilitates access to the Waves blockchain from decentralized applications (dApps) and other services. This functionality opens new possibilities for users, including the ability to play blockchain games using a mobile browser.Protocol and ProvidersDevelopers can connect Waves Signer to their dApps and services to simplify key processes such as user authorization, signing transactions and sending them to the blockchain.The library consists of two components. The Protocol component provides developers with a convenient API for signing and sending transactions.The Provider component is responsible for user authorization, signing and sending transactions, as well as securely storing user data. A Provider enables connection to a user’s wallet on the Waves blockchain. One of the first Waves Signer Providers is Waves.Exchange — though the number of Providers is expected to increase over time, since the protocol enables the creation of custom Providers.Mobile barriersThe launch of Waves Signer will make life easier for all users of dApps on the Waves blockchain, but specifically for those playing decentralized games.The first game dApps on the Waves blockchain were launched around a year ago. However, users initially faced hurdles, since they had to install Waves Keeper — a browser extension that was, at the time, the only interface for transferring data to the blockchain.Since dApp transactions are signed with private keys, users are unwilling to share that information with developers in a decentralized environment — unlike the login and password information that users typically share with companies that provide regular web services, such as Facebook and Google.Meanwhile, the installation of Waves Keeper was viewed by users as an extra hurdle — and, more importantly, smartphone users were often unable to install browser extensions at all.Waves Signer as a solutionWaves Signer has resolved this issue. Now, any user who has a secure account with a Provider — for instance, Waves.Exchange — can use their account for any dApp on the Waves platform, since Waves.Exchange offers an adaptive mobile version. Conversely, an account with a Waves dApp enables use of Waves.Exchange.The best-known game on the Waves blockchain, Dice Roller, has already integrated Waves Signer.How it worksWaves.Exchange Provider is a solution for enabling dApp operation on mobile devices.Initially, the library checks that a website has been opened on a mobile device and suggests a link to follow. The link either downloads a mobile app or opens the web site in the browser.In the latter case, the dApp can add its own JS code. It is therefore possible to communicate with the website from the Waves.Exchange app and add native confirmation forms on top of it.If you are a developer, feel free to check out this guide, which explains how Waves Signer works and how you can gain access to all Waves.Exchange users!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves Signer enables cross-platform dApp use was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 02. 26

The Farewell Party for MRT ...

MRT’s Farewell Party has ended. It’s time to publish the results and find out what happened!From December 2 to February 4, Waves held a sixty-day competition for MRT holders. The party consisted of two blockchain-based games — the FOMO game and two lottery rounds.The competition was launched to mark the beginning of a new phase in the decentralization of the Waves blockchain. Thanks to Waves’ monetary policy, a centralized solution for rewarding miners is no longer needed.Overall, 35% of total MRT token supply was burned. You can see how many MRT were collected and burned at each stage of the party in the chart below.LotteryTickets purchased: 26,843MRT burned: 2,685,300During the first and second rounds of the MRT Farewell Party lottery, 44 prizes totaling 40,000 WAVES were drawn. You can view the burn transactions here:First lotterySecond lotteryFOMO gameTickets purchased: 15,926MRT burned: 777,013The FOMO game consisted of sixty daily rounds, with 500 WAVES prize for each one. Overall, 30,000 WAVES were distributed to the winners. The burn transaction link will appear here in a month due to the FOMO game script that doesn’t allow to do anything with the tokens until 43200 blocks pass after the end of the last game.Best solutionWe’d particularly like to mention the player who created the ‘New hope’ bot, which won 35 times in the FOMO game. What a fantastic result!The bot was created using the Python programming language and the PyWaves library. You can see the source code here.Two players have not claimed their prizes. The addresses of their wallets are as follows:3PAXe3rr7Q93mwq5TNzwzheRxd56Z24SqnE3P44ckBqTBUB5uiyNaHWHFfbMXopL9XSkJvPlease authorize via Waves Keeper and withdraw your WAVES from the website before February 13.We’ve distributed a total of 70,000 WAVES to the winners! Why not use these prize WAVES to set up a full node or lease them to another node? You can vote to change the block reward, use our tools to create new DeFi applications and other decentralized solutions or interact with existing ones such as staking on Waves.Exchange. Step into a new phase of Waves’ ecosystem development!We want to thank all the participants for joining the competition. We hope you enjoyed it!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditThe Farewell Party for MRT has Ended! was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 02. 06

Waves Association launched ...

The Association is open to the entire community, and aims to provide effective governance for the Waves ecosystem.Waves Association has been established in Frankfurt, Germany as a non-profit organization, with the chief goal of promoting the Web3 paradigm and stimulating development of decentralized technologies, including public and private blockchain protocols.This is an important moment in the history of the Waves ecosystem — the formation of an independent body that will define the priorities and directions for the development of Waves’ technologies through a decentralized process of voting at Association meetings.In the future, the Association will implement DAO-like mechanisms on the blockchain for submitting initiatives, making decisions, incentivizing the community and other benefits for maximum transparency and decentralization.Ten community members, including Alexander Ivanov and representing six different countries, have already joined the Waves Association. The list of countries includes Portugal, Spain, Switzerland, Germany, the Netherlands and Russia.Membership and feesThe Association has its own website: https://wavesassociation.org. Both legal entities and individuals can become members of the Association and participate in the decision-making process. Applicants will need to fill out a form on the website and pay a membership fee (amount to be decided by the Association, depending on the type of membership). Members of the Association are divided into three categories:Full member. Annual fee requiredCommunity member. Annual fee requiredHonorary member. No fee requiredGoals of the Association– Governance. Implement decision-making on the blockchain, such as voting on all major issues and updates, as well as development of DAO-style governance in the future.– Technology development. Support and development of the Waves protocol and infrastructure, which includes a decentralized network, technologies and various development tools, with focus on the next-generation Waves technology stack — Gravity Hub.– Toolkit development. Create everything the community needs, enabling anyone to build on Waves and create their own applications and use cases with the ecosystem’s technologies and tools.– Research and education. Active collaboration with universities, research centers, industry, and governments in Europe and around the world.New communication channelsAs the Association will now define the direction and priorities for technology development, all communication about new developments (e.g. Gravity Hub, Waves Matter, etc) will be conducted via the Association.Production of video news in the Monthly Digest format on the Waves Platform YouTube channel will be discontinued. Instead, reports on development progress will appear on the Association’s communication platforms.Join the AssociationWe very much look forward to this next step in the evolution and decentralization of the Waves ecosystem, and warmly invite all community members to participate in the process of shaping and guiding the future of Waves and Web3!To find out more about the Association or apply for membership, visit https://wavesassociation.org.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves Association launched in Frankfurt, Germany was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 02. 03

How to Catch a Cat with TLA+

Many programmers struggle when using formal methods to solve problems within their programs, as those methods, while effective, can be unreasonably complex. To understand why this happens, let’s use the model checking method to solve a relatively easy puzzle:ConditionsYou’re in a hallway with seven doors on one side leading to seven rooms. A cat is hiding in one of these rooms. Your task is to catch the cat. Opening a door takes one step. If you guess the correct door, you catch the cat. If you do not guess the correct door, the cat runs to the next room.TLA+ and temporal logicSome tools can solve problems like this. For example, SMT solvers, which are used frequently in these cases, use predicate logic to solve the problem, but that requires using an array, which is inconvenient for programmers and often results in an unnecessarily complex sequence of actions. TLA+, on the other hand, uses temporal logic, which allows a program to use the state of the system both at the current and next step in one statement.CatDistr' = CatDistr \ {n}This condition states that after checking behind door N, the number of doors where the cat can be located, coincides with the set of rooms where N was taken from. (If the cat was behind door N, of course, he’s been caught.)In an imperative programming language, this creates a new variable calculated from the old one.About setsThe cat’s position is determined by a variable within the set of all possible rooms, rather than specific room as in a simulation modeling system. Formal methods of programming take into account the plurality of possible values, instead of the current value. This is often too complex for beginning developers, so simplifying this system would help those developers work more quickly.Structure of program in TLA+The program consists of declarations and statements (predictors), which describe:The initial stateThe link between actual statesThe next stateAn invariant that runs in all available states.There may be also auxiliary predicates (e.g. parameters) involved.---- MODULE cat ---------------------------------------------------- EXTENDS IntegersCONSTANTS DoorsVARIABLES CatDistr, LastDoor Init == /\ CatDistr = 0..Doors /\ LastDoor = -1 OpenDoor(n) == /\ CatDistr' = 0..Doors \intersect UNION { {x-1, x+1} : x \in CatDistr \ {n} } /\ LastDoor' = nNext == \E door \in 0..Doors : OpenDoor(door)CatWalk == CatDistr /= {} ====================================================================In that example:The first and last lines declare that this is a source module.== means ‘equally by definition’.= means the calculated expression values are equalDoors is a constant set in the configuration file.CatDistr determines the room in which the cat is located.The LastDoor variable, which represents the last checked room, conveniently reads the output of the program. For big models, such variables could slow down the program workflow and increase the number of states that need to be analyzed. In this model, however, the state now contains history of which doors were opened. Thus, equal states created in different ways are now different.The Init predictor describes the initial state of the program — in this case, no doors have been opened yet.OpenDoor(n) describes what happens when door n is opened — either you caught the cat, or you didn’t.The Next predictor exists because TLA+ does not know in which room we might enter next, so it will check to see if invariants are correct in each case.Here is a more clear variant:Next == OpenDoor(0) \/ OpenDoor(1) \/ ... \/ OpenDoor(Doors)In this case, the code works with a fixed number of rooms, making the code parameterized.Finally, the CatWalk invariant determines where the cat is hiding. An invariant breach means that the cat was caught wherever he hid. When verifying a specification, an invariant breach is an error, but since we are not using the tool for its intended purpose, getting an error in this case means solving the problem.Model configurationCONSTANTS Doors = 6 INIT InitNEXT Next INVARIANT CatWalkThis configuration includes the initial condition, the number of rooms, the conditions for a state change, and a verifiable test.You can run this model from the command line using this command:tlc2 -config cat.cfg cat.tla.TLA+ has an advanced GUI and is launched by tla-toolbox command. Unfortunately, it does not understand .cfg files, so the model parameters must be configured through the menu.ConclusionCreating this particular program was fairly simple, but in many cases, applying formal methods will require much larger models and the use of various language constructions. We hope that solving simpler puzzles such as this will provide an easy and interesting way to apply formal methods the work projects.A simple program for interactive solution verification can be found here.Learn more about TLA+ here.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditHow to Catch a Cat with TLA+ was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 01. 28

Waves 2019: Year in review

2019 was a busy year for Waves, from the launch of several new products to a shift in the entire approach of ecosystem development. Here is a look back at the most significant releases and updates of last year.Annual stats for the Waves network:The number of full nodes increased by 25%, from 310 to 413Almost 1,700 people finished the course ‘Mastering Web 3.0 with Waves’There are 10,526 smart contracts deployed on the Waves mainnet, of which 394 are scripts for dAppsOver half of all WAVES in existence are locked for stakingJanuaryWaves released a plugin for Visual Studio Code with support for the Ride programming language. The code editor was implemented in collaboration with Microsoft. This tool enables developers to build and debug dApps on the Waves Platform open protocol.To provide financial support to talented developers and Waves-based startups, Waves Grants was launched. Throughout 2019, numerous different projects such as Neutrino were launched thanks to this grant program.Smart assets — unique tokens with a script applied — were activated on mainnet.FebruaryThis month, we significantly increased Waves Keeper’s security and availability. The browser extension gained added protection from Trojan-Clicker viruses. Waves Keeper also became available for Opera and Edge browsers, as well as Chrome and Firefox.MarchThe Ride programming language was released on testnet, providing the opportunity to Waves developers to build their own dApps using Waves IDE.Waves launched the Waves Reward Token (WRT) to incentivize Ambassadors and facilitate feedback from the community for our Ambassadors program. 872,200 WRT were distributed to 8,722 addresses.AprilIn April, Waves celebrated its third birthday, holding a huge meetup in Moscow. More than 700 people attended the event. You can watch the event report here.Waves launched a decentralized token rating system that allows voting for tokens issued on the Waves Platform open protocol. The system works in a similar way to BetterTokens, but each user decides what’s good and what’s bad.Additionally, Waves Incubator was announced. Through this program, anybody can receive technical expertise, marketing assistance and long-term support for their project. In addition, the program allows participants to receive up to 100,000 WAVES in financial support.MayWaves community members launched a free educational course for developers, aiming to stimulate creation of dApps using the Ride programming language. The course was ultimately translated into many popular languages including German, French, Portuguese, Spanish, Japanese, Arabic, Russian, Chinese and Hindi. Almost 1,700 participants have completed the course.JuneJune was a very important month for us as it saw the release of Waves Node 1.0, and the launch of the Ride programming language on mainnet. It also became possible to issue non-fungible tokens (NFTs) on the Waves network. This feature is most relevant for gaming applications, including Item Market, which is currently being actively developed.We launched the Waves Community website, where you can find information about the tools and projects that make up our ecosystem, as well as the most relevant news and updates, all in one place.JulyWaves shifted its focus from Russia to the global market. As a part of this decision, Sasha Ivanov sold the Vostok brand. Henceforth, the Waves Enterprise team is in charge of solutions for the corporate sector.To increase the decentralization of the Waves network, we launched the Game of Nodes competition and relaunched our node support program. Thanks to Game of Nodes, more than 50 new nodes were added to the Waves network, and over a million WAVES were leased to new participants.AugustThis month, we published a proposal for Waves’ ‘Block reward and community-driven monetary policy’, aiming to increase mining and leasing profits. This was a crucial effort going forwards, giving the community full control over the Waves network.Our gaming initiative Item Market was launched. The platform allows game developers and studios to create and sell in-game items. Nyan Cat, Shadow Era, Chain Warriors and LIGA are run on the Item Market protocol.SeptemberThe community voted in favour of the ‘Block reward and community-driven monetary policy’ feature. The Waves team updated the node with support for decentralized monetary policy. The initial block reward was 6 WAVES.To eliminate possible blockchain rollback issues on our testnet, Waves launched a new experimental blockchain, stagenet. This is a fully-functional version of Waves network, in which WAVES has no value. Stagenet helps developers to test the functionality of new versions of Waves before they are deployed on testnet and mainnet.OctoberWaves revealed its outlines of plans for the ongoing development of the ecosystem. Waves will develop an interchain protocol that will connect all our networks and make them interoperable. We are also going to integrate sharding for the public network and develop an Oracle Chain to provide access to real-world data for our networks. We are currently working on this, so wait for more updates!NovemberWaves released an alternative version of our node software, built with the Go programming language. Go offers both high performance and low hardware requirements. The new implementation makes our network even more stable, due to the redundancy it provides in terms of diversity of implementations. You can find an article about it here.DecemberDecember 2 marked the launch day of Waves.Exchange, a trading solution on the Waves blockchain protocol. The new exchange offers market orders, an optimized client, a ‘Tick size’ feature, support for USDT and native SegWit addresses, in addition to all the existing benefits of Waves DEX.Overall, it has been an excellent year for Waves, with many new projects being released and existing communities growing more rapidly than we expected. We want to thank all our community for their deep involvement in the development of the ecosystem. We appreciate you and look forward to working with everyone in the years to come!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves 2019: Year in review was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 01. 22

Web Worker easier than you ...

In this article, a DIRTY, unsafe, unstable and scary <em>eval</em> method will be described. So, if you are uncomfortable with that, stop reading right now.First off, some issues with convenience remained unresolved: in code sent to web web workers, closure can’t be used.All of us like new technologies, and all of us like new technologies to be convenient to use. However, it’s not exactly the case with web workers. web workers accept files or links to files, which isn’t convenient. It would be good to be able to put any task into web workers, not just specifically planned code.What do we need to make web workers more convenient to operate? I believe, it’s the following:A possibility to launch in web workers any code at any momentA possibility to send to web workers complicated data (class instances, functions)A possibility to receive a promise with a reply from a web worker.Let’s try to write it. For starters, we’ll need a communication protocol between a web worker and the main window. In general, a protocol is just a structure and types of data used for communication between a browser window and a web worker. It’s pretty straightforward. You can use this or write your own version. Every message will have an ID and data typical of a specific message type. Initially, we’ll have two types of messages for web workers:Adding libraries/files to a web workerLaunch.A file that will be inside a web workerBefore writing a web worker, we need to describe a file that will be inside of it, supporting the protocol described above. I like object-oriented programming (OOP), so this will be a class named workerBody. This class has to subscribe to an event from the parent window.self.onmessage = (message) => { this.onMessage(message.data); };Now we can listen to events from the parent window. We have two types of events: those which imply a reply and all the rest. Let’s do events: \Libraries and files are added to a web worker using importScripts API.And now the scariest part: for launching a random function, we’ll use eval.... onMessage(message) { switch (message.type) { case MESSAGE_TYPE.ADD_LIBS: this.addLibs(message.libs); break; case MESSAGE_TYPE.WORK: this.doWork(message); break; } } doWork(message) { try { const processor = eval(message.job); const params = this._parser.parse(message.params); const result = processor(params); if (result && result.then && typeof result.then === 'function') { result.then((data) => { this.send({ id: message.id, state: true, body: data }); }, (error) => { if (error instanceof Error) { error = String(error); } this.send({ id: message.id, state: false, body: error }); }); } else { this.send({ id: message.id, state: true, body: result }); } } catch (e) { this.send({ id: message.id, state: false, body: String(e) }); } } send(data) { data.body = this._serializer.serialize(data.body); try { self.postMessage(data); } catch (e) { const toSet = { id: data.id, state: false, body: String(e) }; self.postMessage(toSet); } }The method onMessage is responsible for receiving a message and choosing a handler, doWork launches a sent function and send sends a reply to the parent window.Parser and serializerNow that we have the web worker’s content, we need to learn to serialize and parse any data, so they could be sent to the web worker. Let’s start with a serializer. We want to be able to send to the web worker any data, including class instances, classes and functions, while the web worker’s native capacity enables sending only JSON-like data. To go around that, we’ll need _eval_. We’ll wrap all data that JSON can’t accept into corresponding sting structures and launch them on the other side. To preserve immutability, received data will be cloned on the fly, replacing whatever cannot be serialized by ordinary methods with service objects, which will be replaced back on the other side by a parser. At first sight, this task isn’t difficult, but there are many pitfalls. The scariest limitation of this approach is the inability to use closure, which leads to a slightly different code writing style. Let’s start with the easiest part, the function. First, we need to learn to distinguish a function from a class constructor. Let’s do that:static isFunction(Factory){ if (!Factory.prototype) { // Arrow function has no prototype return true; } const prototypePropsLength = Object.getOwnPropertyNames(Factory.prototype) .filter(item => item !== 'constructor') .length; return prototypePropsLength === 0 && Serializer.getClassParents(Factory).length === 1; } static getClassParents(Factory) { const result = [Factory]; let tmp = Factory; let item = Object.getPrototypeOf(tmp); while (item.prototype) { result.push(item); tmp = item; item = Object.getPrototypeOf(tmp); } return result.reverse(); }First, we’ll check if the function has a prototype. If it doesn’t, this is certainly a function. Then, we look at the number of the prototype’s features. If it only has a constructor and the function isn’t a successor of another class, we consider it a function.When we discover a function, we just replace it with a service object with the fields __type = “serialized-function“ and template corresponds to the template of this function (func.toString()).For now, we’ll skip class and look at class instance. Later, we’ll need to distinguish between regular objects and class instances.static isInstance(some) { const constructor = some.constructor; if (!constructor) { return false; } return !Serializer.isNative(constructor); } static isNative(data) { return /function .*?\(\) \{ \[native code\] \}/.test(data.toString()); }We believe that an object is regular if it doesn’t have a constructor or its constructor is a native function. Once we’ve discovered a class instance, we’ll replace it with a service object with the following fields:__type: ‘serialized-instance’data is data contained in the instanceindex is the class index of this instance on the service class list.To send data, we have to create an extra field, in which we will store a list of unique classes that we send. However, there is a challenge: discovering a class, we need to take not only its template, but also the templates of all parent classes and save them as independent classes, so every parent class gets sent only once, also saving instanceof proof. Discovering a class is easy: this is a function that failed our Serializer.isFunction proof. When adding a class, we check the presence of that class on the list of serialized data and add only unique classes. Code that assembles a class into a template is quite large and is available here.In the parser, we initially check all classes sent to us and compile them if they haven’t been sent. Then, we recursively check every data field and replace service objects with compiled data. The most interesting part is class instances. We have a class and data that were in its instance, but we can’t just create an instance as a constructor request may require parameters that we don’t have. We get that from the nearly forgotten Object.create method, which creates an object with a set prototype. This way, we avoid requesting a constructor, get a class instance and just copy properties into the instance.Creating a web workerFor a web worker to operate successfully, we need a parser and a serializer within the web worker and outside. So we take a serializer and turn it, parser and web worker body into a template. From the template, we make a blob and create a download link over URL.createObjectURL (this method may not work for some “Content-Security-Policy”). This method is also good for launching random code from a string._createworker(customworker) { const template = `var Myworker = ${this._createTemplate(customworker)};`; const blob = new Blob([template], { type: 'application/javascript' }); return new worker(URL.createObjectURL(blob)); } _createTemplate(workerBody) { const Name = Serializer.getFnName(workerBody); if (!Name) { throw new Error('Unnamed worker Body class! Please add name to worker Body class!'); } return [ '(function () {', this._getFullClassTemplate(Serializer, 'Serializer'), this._getFullClassTemplate(Parser, 'Parser'), this._getFullClassTemplate(workerBody, 'workerBody'), `return new workerBody(Serializer, Parser)})();` ].join('\n'); }OutcomeSo, we got a simple-to-use library that can send any code to the web worker. It supports TypeScript classes, for instance:const wrapper = workerWrapper.create(); wrapper.process((params) => { // This code in worker. Cannot use closure! // do some hard work return 100; // or return Promise.resolve(100) }, params).then((result) => { // result = 100; }); wrapper.terminate() // terminate for kill worker processFuture developmentUnfortunately, this library is far from ideal. We need to add support of setters and getters for classes, objects, prototypes and static features. Also, we need to add caching, an alternative script launch without eval, using URL.createObjectURL instead. Finally, a file with the web worker content needs to be added to the assembly (in case on-the-fly creation is not available) etc. Visit the repository!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWeb Worker easier than you thought was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 01. 16

Waves’ annual event focuses...

Representatives of the blockchain industry’s most promising projects gathered in the German capital to share their ideas and discuss the sector’s prospects.Waves invited several top industry players to the event, including Polkadot, Cosmos, Centrifuge and Gnosis. These are all projects that have helped the Berlin blockchain community grow and gain its global status, and without them, this wouldn’t have been a true Berlin blockchain event.Waves founder Sasha Ivanov kicked off the meetup, providing an overview of the most immediate plans and upcoming products — including Waves Matter, a new product that will be the basis for corporate solutions built by Waves Enterprise, as well as for public chains.“This product will be coded in Scala and Go, so we’ll have two versions,” Ivanov said. “And it will allow users to launch their own blockchain in just 15 minutes.”He also introduced Gravity Hub, a service aimed at resolving the interoperability issue between different blockchains.“We want to push forward not only the Waves ecosystem, but the entire blockchain industry to enable mass adoption,” he explained.Other platforms’ representatives picked up on the issue of interoperability between different chains, discussing their own solutions. Billy Rennekamp, Tendermint Developer Relations Engineer, talked about IBC, a messaging protocol for the interchain — “an internet of blockchains”.Several Waves team members spoke about various components of our ecosystem and broader blockchain-related issues.Developer advocate Inal Kardanov discussed the development of blockchain, trying to answer the fundamental question of what the technology’s main goal is. Ride product owner Ilya Smagin’s talk focused on the advantages of non-Turing complete smart contracts and challenges in developing blockchain-based apps.Parity Technologies’ Joe Petrowski explained the Cross-Chain Message Passing (XCMP) solution, which facilitates cross-chain transactions using a queuing mechanism based around a Merkle tree.Eric Dvorsak from the Status team introduced the ambitious idea of bringing together a chat app, a wallet and a Web 3.0 browser.Waves Enterprise CPO Artyom Kalikhov gave an overview of enterprise blockchain solutions in the Waves Ecosystem.As part of the DeFi Hour, Andrej Ktitarev, co-founder of Deepwork Studio, shared insights on product strategy and design for DeFi solutions, while Neutrino product owner Aleksey Pupyshev gave an introduction to this algorithmic stablecoin. Ioann Voronin, Waves.Exchange’s advisor and product consultant, revealed the new exchange’s plans for 2020.A panel discussion featuring Gnosis’ prediction market product manager Graeme Barnes, Waves Platform CBDO Max Pertsovsky, Neufund Business Development Manager Alex Mole and Cassidy Daly, who is in charge of token design and research at Centrifuge, focused on DeFi in the digital asset space.The panelists agreed that the finance industry is steadily moving towards decentralization.According to Alex, DeFi needs more inclusivity, moving away from being “a swimming pool for traders and speculators”. Max added that lack of insurance and security issues are among the obstacles DeFi is currently facing.Graeme said he wants to see more regulatory certainty, while Cassidy concluded that real users engaging with products and solving real problems are vital, and regulation will follow naturally.This years’ event was supported by the Department of Decentralization (DoD), an organization focused on raising awareness about the challenges and benefits of decentralization and open source software.“DoD is all about collaboration,” said Maria Paula Fernandez, DoD’s founder and managing director. “We believe that the more our ecosystem grows, [the earlier] we can all reach the point where our vision of decentralized tech is realized and in the hands of everyone,” she said. “…And we love bringing the community together, especially with some festive fun sprinkled on top, so we were super excited to be cohosting the party with Waves!”Videos of all talks and the panel discussion are available on our YouTube channel.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves’ annual event focuses on DeFi was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 12. 27

Gravity Hub to unite blockc...

Waves’ new blockchain-agnostic solution is a major step towards interoperability between different blockchains, while also helping resolve the issue of obtaining real-world data.Gravity Hub, presented at Waves Community Meetup in Berlin on December 11, aims to unite all existing blockchains and dApps, resolving the interoperability issue. It will also operate as a data oracle, feeding data from the outside world to the blockchain.Interoperability protocolGravity Hub is essentially a blockchain that doesn’t have any tokens, but that can communicate with other blockchains, such as Waves Platform, Waves Enterprise or Ethereum.The use of the word “gravity” is by no means random, as the solution will have properties similar to those of gravity: it will attract and connect various blockchains.So far, the inability to transfer data from one blockchain to another has been a major hindrance to the development of the blockchain space. This solution has the potential to take blockchain technology to a new level by facilitating free and unfettered communication between any existing blockchains.Gravity Hub will assume interoperability at the protocol level, as well as at the decentralized applications level, allowing a dApp to send a request to another dApp on different blockchain.Gravity Hub’s nodes will be able, for instance, to obtain block headers from the Ethereum network and send them to Waves Platform. If Ethereum block header data is available on Waves Platform, it will be possible to prove that a specific transaction has taken place on Ethereum. To obtain that data, users will pay reasonable fees.For sending tokens between blockchains, token ports will be used, which will also use data from Gravity Hub. For more details on interchain transfers over token ports, see this post.Gravity Hub will also be connected to custom chains, which represent a new approach to blockchain customization. Waves Matter, our blockchain engine, can be assembled in any configuration for different purposes.As nodes will be split into the main core and a number of mandatory and optional plug-ins, users will be able to choose smart contract languages, consensus algorithm modules, cryptography types and other functionality for their custom chains.We will explore the specifics of Waves Matter in subsequent posts.Watching dataIn addition to providing an interoperability protocol, Gravity Hub will help resolve the issue of obtaining information from the outside world, as it will facilitate access of all connected chains to data from outside the blockchain.A member of any network connected to Gravity Hub will be able to request oracle data from any information systems that have APIs — from Google to enterprise ERP systems.All Gravity Hub nodes will have “data watchers” — modules for collecting various types of data, such as block headers and block height from other blockchains, exchange rates, etc.For each data watcher, a data profile will be set. For instance, if a data watcher collects Ethereum block header data, this will need to be done with a certain frequency and reliability.Reaching consensusHow can we make sure that data provided by Gravity Hub is accurate? That can be achieved by consensus between several nodes.To that end, at least several nodes collect data of the same type, which is written to the Gravity Hub blockchain as “raw data”. Once consensus has been reached, “consensus data” is also written to the blockchain and can be sent to a user who has requested it. There are various options for sending consensus data to the user.One option is a multi-signature solution, whereby a transaction containing the consensus data must be signed by all nodes.Alternatively, any node could be allowed to send consensus data to the user, but in that case, the node’s stake will act as collateral. If, for instance, a node sends data to the target blockchain that is different from the ultimate consensus data, proof of that can be sent to a smart contract, which will automatically deduct part of the node’s stake as a fine.A user will be able to request a certain type of data over a specific time period for a fee consisting of execution costs and the node’s fee. Also, the user will be able to set up preferences. For example, when requesting exchange rate data, the user can set the maximum variability required.How to join Gravity HubTo become a Gravity Hub member, a user will need to install a Gravity Hub node and, for that purpose, to lock a certain sum of money on any of the supported public blockchain networks.You can lock a certain sum on the Ethereum network for a fixed period, using a special smart contract. Once you’ve done that, you’ll be able to collect revenues from users’ data requests, also enjoying Gravity Hub’s other advantages.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditGravity Hub to unite blockchains and connect with other systems was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 12. 11

Challenges for Odyssey Hack...

The upcoming Odyssey Hackathon 2020 will be held on 3–5 April in Groningen, Netherlands. As an ecosystem member, Waves hopes to offer the right building blocks to help participants solve as much of the challenges as possible. Discover all the challenges and get ready for the world’s biggest blockchain & AI hackathon!Since 2016, Odyssey participants have tackled 21st-century challenges using technologies such as blockchain, AI, Big Data and robotics. Overall, more than 230 prototypes have emerged from the hackathon.All teams participating in Odyssey Hackathon 2020 will be provided with access to ecosystems related to their challenge for further prototype development and pilot launch after the event. All 2,000 participants will also receive part of the €200,000 total cash rewards.The hackathon is optimized for startups, established teams, scale-ups, SMEs, corporate teams, as well as community and student teams who want to work on one of the challenges outlined.In late October, we announced that Waves was joining the Odyssey ecosystem. We therefore hope to see more Waves-based solutions presented by hackathon participants for a broad range of industries, from cybersecurity and critical infrastructure to environment and energy.In April 2019, the Tradisys team won the hackathon’s Rethink Retirement track. Tradisys came up with a solution for a Dutch pension fund based on the Waves Platform open protocol.20 challenges to shape the 21st centuryThe Odyssey challenges address complex multi-stakeholder issues that cannot be solved by one company, government, or industry. Teams will be able to leave their mark on a range of industries, from healthcare and energy transition to public safety and security.The challenges are provided by various companies, state institutions, and non-profit organizations, including the International Council for Conservation of Nature, KLM Cargo and the Dutch Ministry of the Interior and Kingdom Relations.You can explore all the challenges here.Waves will reveal its potential building blocks to help solve the challenges at Odyssey Connect, which will be held on 4–5 February 2020.Odyssey ConnectTo help participating teams successfully tackle the challenges there will be a two-day knowledge exchange event in The Hague, Netherlands. Here, prospective teams can meet the challenge leaders, find out more about the challenges directly from them and get a headstart in hackathon preparation. You will also be able to network with other participating teams.The Waves team will attend the event and announce its building blocks — the technology stack participants of the hackathon can use — and the challenges that can be addressed using them. We’ll provide any support needed both during Odyssey Connect and with our team of Jedi during the hackathon itself.You can apply to participate here. The event is free.If you have any questions about Waves’ participation and support, please ask them in our Telegram group. See you in The Hague!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditChallenges for Odyssey Hackathon 2020 announced! was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 12. 06

Farewell Party for MRT Begins!

On October 1 we announced our Farewell party for MRT: a sixty-day competition in which MRT holders will be able to win prizes totaling 70,000 WAVES. Now it’s time to reveal the games’ mechanics and rules.Initially, we planned to distribute 1,000,000 WAVES in leases for a year. However, we’ve received many complaints. Players want to win tokens, and not everyone runs a full node. That’s why we’ve changed the rules. Now, we are going to distribute 70,000 WAVES — which will also be more profitable for participants.The competition consists of two games that are completely decentralized, with no trusted parties or central server. All gameplay is automated and governed by the rules of a smart contract.Every MRT holder can take part in the competition and receive a prize. You need to have Waves Keeper installed to access the games. You can find all updates and game links here.FOMO gameDuration: December 4 — February 2Ticket price: 100 MRTIn our FOMO game, players compete to be the last to buy a ticket before the timer reaches zero. The winner receives 500 WAVES. Each game round lasts for one day and consists of two parts:Play. Players compete against each other for 1,240 blocks.Withdrawal. The winner can claim their prize at any time until the end of the party.If no one buys a ticket for 15 blocks, the round ends early and the most recent buyer wins. There is no limit to the number of tickets that can be bought by any given player.LotteriesDuration: 4 December — 13 JanuaryTicket price: 100 MRTTwo lotteries are based on a decentralized randomizer, a provably fair number-generation service on the Waves Platform open protocol. The probability of winning the lottery will be proportional to the number of tickets entrants purchase, using MRT.Here’s how it works:We request a random number in the range of the number of purchased tickets by sending a transaction that has a unique, automatically-generated ID. This is the first component of the random number generation process.A server — an oracle managed by a smart contract — receives this transaction.The server implements an RSA signature for the transaction ID.The server sends an answer, the signed transaction identifier. This is our random number. It is now fixed on the blockchain.We reveal the result of the game to players.We cannot predict the result of the signature. The random number and time of its request are recorded on the Waves blockchain forever. Any result can be mathematically verified. This method therefore ensures that manipulation is technically impossible. You can find a detailed description of how the RSA-based randomizer works here.The draws for the lotteries will be conducted on 13 December and 13 January, with prizes for each of them:4 x 2,000 WAVES6 x 1,000 WAVES12 x 500 WAVESLet’s celebrate!We want to see as many players as possible to say goodbye to MRT. Feel free to ask any questions in our Telegram group and join the competition!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditFarewell Party for MRT Begins! was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 12. 03

An overview of the Waves ec...

Over the last three years, we have developed a complete ecosystem for creating decentralized applications. We have not only built this from scratch, but also provided access to tools as well as the decentralized infrastructure for dApp development and launch.When you first come to other blockchain ecosystems, it is often difficult to understand where to start and what you can do. Waves has adopted a more compact, clear approach, but it’s complete and full of ready-to-use solutions, dApps, tools and projects for creating your own applications.DeFi and dAppsDon’t be surprised that we’re placing such an emphasis on decentralized finance for the ecosystem, because DeFi is essentially a special case — a particular category of decentralized applications. And since we have developed a platform that is ideal for building and launching dApps, it is perfectly suited for DeFi, which is now very much trending. We are riding the wave!So, how can you create a decentralized business application on Waves? There’s more than enough to get you started. We’ve got the Ride programming language, lots of documentation, a development environment (IDE), and an active community — ask any questions you have — you don’t have to do it alone!What’s next after you have created your application? There’s a solution for KYC, BetterTokens, and one for fiat, Indacoin. Of course, we’re actively working on adding more options, but even at this stage you have everything you need.Wondering what to do next with your dApp? Add it to dAppocean so people can find it, contact Waves Labs for financial and marketing assistance, and list your project on the Waves community website.TradingDo you trade digital assets? Waves Ecosystem also has something ideally suited to your needs. Waves.Exchange is a cross-platform trading solution that combines the security of a decentralized system with the user experience of the best centralized exchanges.Due to the decentralized nature of the exchange, there is no listing process for tokens issued on the Waves blockchain. All existing digital assets and combinations of pairs are available, so you can trade any market that has liquidity — or create your own market for your preferred pair.The team that is developing Waves.Exchange claims that they will deliver the best user experience of any decentralized exchange. Plans involve adding a series of fiat gateways, including the launch of a USDT gateway (ERC-20 standard) by the end of this year.IEOs and STOsAre you looking to raise money for a blockchain project? Waves makes it easy to create a dedicated token for your initiative and list it on Waves.Exchange so your community and investors can easily purchase them. Tokens can be listed against any other currency or asset.Alternatively, for security token offerings (STOs), we have a fully-regulated partner, Tokenomica. Based in the crypto-friendly jurisdiction of Malta, Tokenomica will enable you to create and sell compliant digital assets, providing all the benefits of conventional shares with the flexibility of a blockchain-based approach.StakingIf you hold WAVES, you might want to use them to generate passive income and help maintain the security of the network. Waves’ proof-of-stake consensus offers regular block rewards (currently 6 WAVES per block, though this can be increased or decreased via Waves’ community-driven monetary policy protocol). Currently, staking provides rewards of around 5% per year. There are several options available.If you are more technically confident and have at least 1,000 WAVES, you may choose to run your own full node and mine WAVES directly. You will not need any specialist hardware; a VPS with 2 vCPUs, 4 GB RAM and 80 GB storage is enough. You will need to factor in hosting costs. (Digital Ocean charges $20 per month for an instance with these specifications.) Block generators collect 40% of transaction fees for the generated block and 60% for the previous block, due to the way the Waves-NG block generation protocol operates.If you prefer not to run your own node, you can lease any amount of WAVES to a full node and collect a proportion of the rewards — different nodes offer different amounts, and often other tokens as a bonus. Leased WAVES are not transferred to the mining node’s account and remain in full control of the owner; they are simply locked for the duration of the lease, which can be cancelled at any time.Lastly, some exchanges offer the ability to stake WAVES held on them. Tidex is one such exchange. Always be careful when holding cryptocurrencies on third-party services, since these are a target for hackers.EnterpriseAre you looking to digitalize your current business processes, and privacy is a key concern for you? For these purposes we have a special solution — Waves Enterprise. A number of large companies have already created business applications on top of Waves Enterprise, in various fields:Asset tokenizationCash poolingCorporate loansDocument flowIdentity recordsHousing and UtilitiesNotary servicesProcurementSupply chainsMoreover, business applications based on Waves Enterprise technologies are built by a dedicated team of professional integrators, who provide a full range of services for the development and maintenance of business solutions.GamingGaming is also gaining attention as a use case for blockchain technology. We provide tools for implementing blockchain within games, we work with teams of game developers and have already seen the launch of several high-quality games that are significantly better in terms of user experience than many of their competitors.Future plansIn the future, we plan to develop an OracleChain and infrastructure for interchain communication, which we explore in this article.On December 11, in Berlin, Sasha Ivanov will talk about our plans for the further development of the Waves ecosystem, so stay tuned!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditAn overview of the Waves ecosystem was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 27

Neutrino stablecoin launche...

The dev team, supported by the Waves Labs incubator, is introducing a beta version of a new DeFi project that aims to mitigate the volatility of cryptocurrencies.Neutrino is a cryptocurrency with a stable price, regulated by the Neutrino Protocol algorithm and backed by an underlying token and smart contract. In other words, it is a hybrid of a cryptocurrency-backed and an algorithmic stablecoin.How does it work?You send WAVES to the Neutrino smart contract, which generates an equivalent value of stablecoins. In the current version, a user can generate only dollar-denominated tokens — USD-N (USD-N = $1). The team plans to expand the options to gold, oil and S&P500-pegged tokens in the future.All WAVES deposited as collateral are leased to a Neutrino node. The mining rewards are transferred back to the Neutrino smart contract and automatically converted to USD-N tokens. Thus, USD-N owners can not only hedge volatility risks, but also earn.To ensure the value of USD-N remains completely stable, the Neutrino algorithm manages its price with a system of derivatives and payouts. Let’s consider two possible scenarios:WAVES price has fallen. An oracle ‘sees’ this and communicates it to a smart contract. The smart contract then issues and sells Neutrino bonds — USD-NB — on Waves.Exchange.WAVES price has risen. The smart contract liquidates USD-NB bonds purchased on the open market for 1 USD-N each. This profits bond buyers because USD-NB was issued at a price of less than 1 USD-N.You can generate USD-N here. No registration or KYC is required.You can read the White Paper here. All project updates will be displayed on social media:TwitterTelegram groupMediumRead Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditNeutrino stablecoin launched for Waves ecosystem was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 26

Neutrino stablecoin launche...

The dev team, supported by the Waves Labs incubator, is introducing a beta version of a new DeFi project that aims to mitigate the volatility of cryptocurrencies.Neutrino is a cryptocurrency with a stable price, regulated by the Neutrino Protocol algorithm and backed by an underlying token and smart contract. In other words, it is a hybrid of a cryptocurrency-backed and an algorithmic stablecoin.How does it work?You send WAVES to the Neutrino smart contract, which generates an equivalent value of stablecoins. In the current version, a user can generate only dollar-denominated tokens — USD-N (USD-N = $1). The team plans to expand the options to gold, oil and S&P500-pegged tokens in the future.All WAVES deposited as collateral are leased to a Neutrino node. The mining rewards are transferred back to the Neutrino smart contract and automatically converted to USD-N tokens. Thus, USD-N owners can not only hedge volatility risks, but also earn.To ensure the value of USD-N remains completely stable, the Neutrino algorithm manages its price with a system of derivatives and payouts. Let’s consider two possible scenarios:WAVES price has fallen. An oracle ‘sees’ this and communicates it to a smart contract. The smart contract then issues and sells Neutrino bonds — USD-NB — on Waves.Exchange.WAVES price has risen. The smart contract liquidates USD-NB bonds purchased on the open market for 1 USD-N each. This profits bond buyers because USD-NB was issued at a price of less than 1 USD-N.You can generate USD-N here. No registration or KYC is required.You can read the White Paper here. All project updates will be displayed on social media:TwitterTelegram groupMediumRead Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves Subreddit


19. 11. 26

Ecosystem development strat...

As we continue to explain our new vision, this post explores bridges between Waves Platform and other blockchains.One of the main priorities in Waves’ future development will be achieving interoperability between the Waves ecosystem and other blockchains. This will contribute to the widespread use of blockchain technology and boost its implementation for a range of applications.The first step towards universal interoperability will be building a bridge connecting the Waves and Ethereum blockchains.The biggest issues that needs to be resolved to facilitate inter-blockchain communication are receiving data from another blockchain and sending tokens between blockchains.A scheme that allows one blockchain to know about transactions in another blockchain would enable direct exchange of funds between blockchains, making existing centralized gateways obsolete.Introducing Chain collectorsFig. 1.Let’s say we have two independent blockchains, A and B. We need to be able to prove on the B network that a transaction has actually taken place on the A network, and vice versa.To achieve that, a chain collector is created for the B network. This is a smart account storing block headers of network A blocks. The chain collector will only add a block’s header to the chain if there is a correct link to the previous block, a block generator’s valid signature, and an oracle’s valid signature.The chain collector will store the sequence of blocks that has been checked as described above. A provider of validity and finality of data assumes responsibility for their correctness (see further below).The use of chain collectors will facilitate “bridges” between independent blockchains, as it will enable proofs of token transfers between blockchains.Building bridgesTo automate the process of token transfer between independent blockchains, we suggest using smart accounts as “token ports”. A token port for the B network allows withdrawal of funds only if there is a proof of deposit for the same amount to the A network’s token port.Upon receiving that proof, the B network’s token port checks the entire transaction, including its sender, recipient, amount and asset ID, to make sure that the transaction has been added to the specified block.Finality issueOne important issue that needs to be addressed is block finality in the other blockchain. How can a blockchain know that a block in the other blockchain has truly been finalized? If block finality is based on probability, as is the case in PoS-consensus networks, it’s impossible to ensure a block’s finality in the other network.However, a group of validators could be set up, who will validate authenticity and finality of blocks with their signatures. Validators’ public keys are known in advance, and the authenticity of data they provide is confirmed by their signatures.If a block’s header has been signed by the required number of validators, it is considered to be finalized and becomes available to accounts in the B network. To withdraw the funds, a user will have to provide a Merkle Tree proof for the transfer transaction in the A network’s specific block.A chain created by the B network’s validators is stored in the chain collector account’s state, and basically operates as an oracle.A consensus between validators could be reached in a number of ways, including a multi-signature, which will be verified by the chain collector, or threshold signatures (also verified by the chain collector). After that the validators send their consensus decision to a blockchain interested in that information.Exchange of funds between the Waves and Ethereum blockchainsIn both networks, an account for sending and receiving funds — a token port — will be created. The accounts will know each other’s addresses.Similarly, in both networks, chain collector accounts will be created, which will provide required transaction data for the other blockchain’s token port.Sending tokens from Ethereum to WavesFig. 2Let’s assume Alice, who has an account on the Ethereum blockchain, wants to send funds to Bob, who has an account on the Waves blockchain. Alice sends ETH to a token port on the Ethereum network and attaches Bob’s address to the transaction using the token port interface.The transaction is subsequently added to the transactionRootHash of a block in the Ethereum network. Waves’ chain collector records the header of this block on the Ethereum network to its state.To prove to the Waves’ token port that the transaction is present on the Ethereum blockchain, Bob initiates a validation process to confirm that the transactionRootHash contains the ID of that specific transaction. The token port checks this against the chain collector’s data using the Merkle proof. If the provided proof is correct, Bob will be able to collect the funds Alice sent him (in wETH).Sending tokens from Waves to EthereumFig. 3Now let’s assume Bob, who has an account on the Waves blockchain, wants to send funds to Alice, who has an account on the Ethereum blockchain.Bob sends WAVES to the token port for the Waves network and attaches Alice’s address on the Ethereum network to the transaction.The transaction is subsequently added to the transactionRootHash of a block in the Waves network.Ethereum’s chain collector writes the header of this block on the Waves network to its state.To prove to the Ethereum token port that the transaction is present on the Waves blockchain, Alice initiates a validation process to confirm that the transactionRootHash contains the ID of that specific transaction. The token port checks this against the chain collector’s data using Merkle proof. If the provided data is correct, Alice will be able to collect the funds Bob sent her.Economics and incentivesA token port could charge a fee for each deposit/withdrawal transaction.A chain collector could operate by request: when an account on the B network needs information about a transaction on the A network, that account will send a request to the chain collector, requesting a block header at a specific height. In exchange for that information, the account pays a fee to the chain collector.To hedge against a collusion between validators, they can be required to undergo a KYC procedure and, if a chain collector provides incorrect data, the validators will take responsibility for that.Over the coming weeks, we’ll continue detailing further aspects of Waves’ evolving ecosystem.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditEcosystem development strategy: interchain bridges was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 22

Secure migration to Waves.E...

The first phase of secure migration to the new exchange service has now begun. All current users of the Waves wallet and DEX can import their seed phrases to the new Waves.Exchange domain with just one click!Your seed phrases are not stored on a central server — they are held locally on your device, just as before, so your security is not compromised.To start migration, you need to open your wallet, and when you log into your account on the original application, you will see a pop-up window with information about the migration process. Simply follow the instructions.ATTENTION!!! The migration process for web wallets is ONLY available from the web domains https://dex.wavesplatform.com and https://client.wavesplatform.com. To complete migration for the desktop client you must use the Waves DEX desktop application you have already installed.Do not use any other domains for migration, do not input your seed phrases and/or private keys anywhere, and do not download any other clients aside from the software indicated for the migration process from your current Waves DEX client. The migration process does not require you to input your seed phrases and/or private keys anywhere. Waves Platform or Waves.Exchange employees will never ask you to provide any kind of personal information, including private keys and/or seed phrases.The migration process is absolutely free, and it will not affect any gateways, which will process all transactions as normal. You do not need to pay or send any tokens to anyone to complete migration.We have prepared a webpage with answers to some of the most frequently asked questions. If there’s anything you’re uncertain about, it’s likely you’ll be able to find out more here: https://waves.exchange/migration?faq=trueAfter the migration process completes successfully, you’ll get a notification. This means that on December 2, when use of all the old applications will be discontinued, you’ll be ready to use the new Waves.Exchange app straight away.Don’t forget to update your mobile app on Google Play (Android) or the AppStore (iOS). This will also ensure uninterrupted access to the exchange on launch day.AdvisorsIn our previous announcement, we mentioned that we will have a number of advisors who will oversee the new exchange. The list of advisors includes the following people:– Rob Van de Camp: advisor and technical consultantRob van de Camp (G1zm0nl) has gained entrepreneurial experience across a multitude of ICT disciplines since 2003, which has contributed to his expertise in a variety of fields — from Linux, PHP and cyber security to data centers, ISO27001/9001 and online marketing. He has been active in the blockchain community since 2013, and a part of Waves community since the very beginning. Rob is well known for maintaining his own data center and the statistics website dev.pywaves.org. Within the blockchain space Rob has worked with and for projects including Waves and MyTrackNet.– Marc Jansen: advisor and technical consultantMarc Jansen (hawky) has been involved with the Waves platform right from the very start. He was a Day 1 ICO investor and has developed tools and services on the platform for as long as it has existed, supporting a large number of different projects. His interests lie in Software Engineering and Software Quality Management, with a special focus on blockchain and cryptocurrencies. Marc has supported projects on different levels, ranging from blockchain infrastructure up to (decentralized) applications on top of distributed ledger technologies. Marc holds a Masters degree in Mathematics and a PhD in Computer Science.– Ioann Voronin: advisor and product consultantIoann Voronin is an entrepreneur and developer with more than 10 years of experience in the IT industry. In 2017, Ioann assembled the Tradisys development team, which has made a significant contribution to supporting the development of the Waves ecosystem. Over the past two years, the team has developed many decentralized applications, built several major trading systems, and won the world’s largest hackathon using Waves technology — Odyssey.– Sasha Ivanov: advisor and consultant on ecosystem interactionWaves founder Sasha Ivanov graduated from Moscow State University’s theoretical physics department in 2001. He did further studies at Germany’s Leipzig University and took an early interest in digital currencies. Around 2009, he became involved in programming bots for trading on international forex markets, making use of artificial neural networks, and later worked on trading operations and neural network trading systems for banks. In 2016, he launched Waves Platform, an open blockchain platform and Waves Enterprise in 2019, a global private blockchain solution.For any questions related to account migration to the new exchange, please contact us via our Telegram channel or ask one of our advisors. You can also find our FAQ here: https://waves.exchange/migration?faq=trueStay tuned and follow Waves.Exchange Twitter!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditSecure migration to Waves.Exchange was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 18

Official Go Implementation ...

To make node customization accessible to more developers, we present the new version of a fully open-source Waves Platform node, written in the Go programming language.Scala nodeAnyone is able to run a Waves Platform node on their computer. This means that you can participate in validating transactions and generating blocks on the Waves network, as well as configuring your node in different ways, depending on your specific needs (for example, to automate lessors’ payouts).Up to this point, the only node software available for the Waves Platform has been written in the Scala programming language. We are very happy with Scala, and even gained inspiration from it when designing Ride. At the same time, we understand that Scala is not a very widely used language. To make it easier for more developers to understand how the node works, we have implemented an alternative version of the software.Go nodeGo offers both high performance and low hardware requirements. The new implementation also makes our network even more stable, due to the redundancy it provides in terms of diversity of implementations; if there is an error in one implementation, it would not impact the entire network.As this is the first version it is not yet possible to generate blocks. The current version is the most suitable for experimenting. However, the Go implementation is already available for mainnet, testnet, and stagenet.InstallationYou can run a Waves Platform node on Linux, macOS or Windows. You can find a detailed installation guide for the Go implementation here.Note that the Go implementation has its own state storage structure that is incompatible with the Scala version. The Go and Scala nodes are independent implementations, so you cannot copy data from one to the other. Use the import.What’s next?First of all, we want to make network synchronization more stable. Upcoming milestones include:Completing gRPC API and extensive integration testingRide workflow optimizationSupport for new Ride v4 and Waves v1.2 features that are about to be releasedBuilt-in wallet for full block generationWe aim to accelerate the growth of the Waves ecosystem through community-based knowledge and traction. If you have any ideas for how to improve our nodes, then follow these simple steps:Find the relevant GitHub pageFork the repositorySend a pull requestIf the Waves community supports your proposal, then it will be implemented. The most innovative and useful solutions will also be made available in the Scala version. Feel free to modify your version of the node.The ongoing development process will be displayed openly on GitHub, so don’t hesitate to send us bug reports, suggestions, and requests on Issues in the Repository.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditOfficial Go Implementation of the Waves Protocol Released was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 13

WaveFlow: instant token exc...

We present WaveFlow, an exchange platform on which the exchange rate is self-regulating and liquidity of tokens is constant, written in the Ride programming languageUp to this point, Waves DEX has been the only valid place in the Waves ecosystem where users could add liquidity to their tokens, by implementing a trading bot with a custom algorithm. But there is a problem — special skills and knowledge are required. WaveFlow was created to solve this problem.WaveFlow is a platform where people can both exchange tokens and easily create an automated exchange, earning fees. Each exchange is a smart contract that is replenished with both tokens by the owner. The exchange rate is determined by algorithmic pricing.Self-regulated priceThe exchange rate is calculated by the formula:(X + a) * (Y — b) = X * YX * Y = constTerminology:X — an amount of token X, stored in the exchange contractY — an amount of token Y, stored in the exchange contracta — an amount of token X that the user paysb — an amount of token Y that the user receivesTo make it clear, let’s assume that our exchange smart contract stores 1,000 token X and 100 token Y (X = 1,000; Y = 100). Take a look at three examples. In each of them, the amount of X and Y tokens is the same.In each case, we increased the amount of tokens we want to buy. As you can see, the bigger amount of tokens we exchange, the greater the calculated price.WaveFlow isn’t suited to large trades. The market price is designed for small trades, e.g. for interacting with dApps.Exchange creationThe creation of an exchange takes just a couple of clicks. All you need is to have Waves Keeper installed and tokens to deposit.Click on the ‘Create New Exchange’ button.Enter the token IDs, the deposit amount, address and fee you want to receive. Currently, WaveFlow is under testing so you can only have pairs that include Liquid. In the future, you’ll be able to create any pair of assets.Approve the transactions using Waves Keeper.Congratulations! Your exchange will be listed on the platform.Feedback is welcomeAs we mentioned before, the platform is still in the testing phase, so there could be bugs. If you find any issues or have any suggestions for adding new features, please let us know on the Waves forum.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaveFlow: instant token exchange on Waves Platform was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 06

Waves DEX to be spun off

In order to offer users a better experience and wider range of tools, the DEX will now be developed by a dedicated team and renamed Waves Exchange.Up to this point, Waves DEX has been developed as an integral part of the wider Waves platform ecosystem. Over time, several distinct teams have formed, focused on separate components, such as the desktop and web client, mobile apps, matcher and support center.The partnership with the gateway provider Coinomat should also be mentioned. While it can be considered successful, in that no transaction has been compromised in all the time it has been running, users have faced delays, partial unavailability of services and issues related to tech support.Since the launch of Waves DEX, extensive functionality has been developed and numerous experiments have been conducted. Now it’s time to merge all the infrastructure teams into one, synchronizing development work and taking the combined product to a new level.By keeping all of Waves DEX’s best features and adding several new ones, Waves Exchange will combine the advantages of centralized and decentralized digital trading approaches to facilitate powerful trading functionality and boost liquidity.Waves Exchange’s team will see former Waves core team members joining forces with a number of new developers and advisors. The lineup of the advisory board will be announced shortly.A hybrid approachCentralized exchanges are known for enabling faster transactions, higher-quality services and a richer user experience, but they lag behind when it comes to security. Conversely, decentralized exchanges offer users a much greater degree of security, since users’ assets are stored in their wallets rather than on a centralized server.Waves Exchange will provide users with the advantages of decentralized storage, such as absolute security of funds and irreversibility of transactions, while customers will still receive the best user experience they can find in the centralized exchange sector.What to expectThe new team will focus on offering a better user experience and introducing best practices in the trading product area. Refocusing on the product will take time, and far-reaching changes to the exchange’s operation will be gradually introduced over a period of a year.Shortly, partner and market maker programs will be announced, aimed at boosting liquidity on the exchange. Regular users will gain access to tools for generating passive income, including the opportunity to stake stablecoins, collecting interest with very low risk involved.Waves Exchange will combine all previously separate tools, such as the matcher, gateways, desktop and mobile applications, into one product — facilitating faster and more secure gateway operation than under the previous system, in which gateways were run by Coinomat.As the exchange moves to hosting its own gateways, users will experience a significant increase in the speed and stability at which gateway transactions are processed. In addition, the number of reasons for contacting tech support will decline substantially. Finally, users will be able to track the status of all gateway transactions.Among the exchange’s most immediate plans is enhancing the matcher, which will increase transaction speeds even further, and adding new coins — including the most popular stablecoin, Tether USD (USDT).Fiat gateways are also slated for a major update. Details will be announced in due course. In the short term, the new exchange’s team plans to add built-in instruments to expand trading opportunities.The new team wants to make all speculators happy, no matter how dirty they might be.A special focus will be placed on the mobile apps, which will be substantially improved. Similarly, the matcher API will be significantly enhanced for better interaction with the matcher.Further plans include tools for margin trading and brokerage.Major datesAs of November 18, users will be able to import their accounts and seed phrases, and, on December 2, the new exchange will be launched.In the longer run, Waves Exchange aims to become a major liquidity and trading center for a broad range of customers, from crypto enthusiasts to traditional market traders.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves DEX to be spun off was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 05

Blockchain RSA-based random

There’s a problem we needed to address in the course of developing our games. It’s complicated to generate a random number in a distributed network. Almost all blockchains have already faced this issue. Indeed, in networks where there is no trust between anyone, the creation of a random number solves a wide range of problems.In this article, we explain how we solved this problem for our games. The first of these was Waves Xmas Tree.Initially, we planned to generate a number using information from the blockchain. However, on further investigation, it became clear that the process used to create a number this way could be manipulated. We had to discard this solution.We came up with a workaround, using a ‘commit-reveal’ scheme. The server proposed a number from 1 to 5, added ‘salt’ to it and hashed the result using the Keccak function. The server pre-debugged a smart contract with an already saved number. The result was that the game was effectively reduced to the user guessing the number hidden by the hash.The player placed their bet and the server sent a hidden number and ‘salt’ to a smart contract. To put it another way, the cards were revealed. Afterwards, the server verified the numbers and decided whether the user had won or lost.If the server didn’t send the number and ‘salt’ for verification, then the user won. In this case, it was necessary to deploy a smart contract in advance and arrange potential winnings for each game. This was inconvenient, expensive and time-consuming. At that time, though, there was no other secure solution.Shortly afterwards, the Tradisys team proposed adding the rsaVerify() function to the Waves protocol. This checks the validity of an RSA signature based on public and private keys. As a result of our proposal, the function was added.We built three new games: Dice Roller, Coin Flip and Ride On Waves. In each of them, the new random number technology was implemented. Let’s take a closer look at how it works.Let’s look at the random number generation first. You can find the smart contract here.Go to the Script tab and choose Decompiled. You will see the smart contract’s code (or script).The smart contract code consists of a list of functions. The ones that are @Callable can be run via Invocation transactions. We are interested in two of them: bet and withdraw:func bet (playerChoice)func withdraw (gameId, rsaSign)The user chooses the range and bet size.The client arranges the bet function. For the image above it would be bet («50»)The client sends an Invocation transaction to the smart contract address (broadcast InvocationTx). A transaction as a Call parameter contains the bet function. This means that the Invocation transaction starts the execution of the bet function on the smart contract (choice: String).4. Let’s look at the bet function:@Callable(i) func bet (playerChoice) = { let newGameNum = IncrementGameNum() let gameId = toBase58String(i.transactionId) let pmt = extract(i.payment) let betNotInWaves = isDefined(pmt.assetId) let feeNotInWaves = isDefined(pmt.assetId) let winAmt = ValidateBetAndDefineWinAmt(pmt.amount, playerChoice) let txIdUsed = isDefined(getString(this, gameId)) if (betNotInWaves) then throw ("Bet amount must be in Waves") else if (feeNotInWaves) then throw ("Transaction's fee must be in Waves") else if (txIdUsed) then throw ("Passed txId had been used before. Game aborted.") else { let playerPubKey58 = toBase58String(i.callerPublicKey) let gameDataStr = FormatGameDataStr(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmt, "") ScriptResult(WriteSet(cons(DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)),cons(DataEntry(GAMESCOUNTERKEY, newGameNum), cons(DataEntry(gameId, gameDataStr), nil)))), TransferSet(cons(ScriptTransfer(SERVER, COMMISSION, unit), nil))) }}The function records a new game in the smart contract state:Unique new game id (game id)Game state = SUBMITTEDPlayer choice (the range is 50)Public keyPotential reward (depends on the player’s bet)This is how the key-value database looks on the blockchain:{ "type": "string", "value": "03WON_0283_448t8Jn9P3717UnXFEVD5VWjfeGE5gBNeWg58H2aJeQEgJ_06574069_09116020000_0229", "key": "2GKTX6NLTgUrE4iy9HtpSSHpZ3G8W4cMfdjyvvnc21dx" }‘Key’ is the game id for a new game. The remaining data is contained in the field ‘value’. These entries are stored in the Data tab of the smart contract:5. The server finds the sent transaction (the new game) via blockchain API. Game id is already recorded in the blockchain, so it’s impossible to change or delete it.6. The server forms a withdraw function (gameId, rsaSign) such as:7. The server sends an Invocation transaction to the smart contract (broadcast InvocationTx). The transaction contains a call to the generated withdraw function (gameId, rsaSign):The function contains game id and an RSA signature of a unique id. The signature result is unchangeable.What does this mean?We take the same value (game id) and apply the RSA signature method to it. This is how the RSA algorithm works. It’s impossible to manipulate the final number because game id and the result of the RSA algorithm are unknown. It’s also pointless to try to guess a number.8. The blockchain receives a transaction that runs the withdraw function (gameId, rsaSign).9. There is a call for the GenerateRandIn function inside the withdraw function (gameId, rsaSign). This is a random number generator.# @return 1 ... 100 func GenerateRandInt (gameId,rsaSign) = { # verify RSA signature to proof random let rsaSigValid = rsaVerify (SHA256, toBytes(gameId), rsaSign, RSAPUBLIC) if (rsaSigValid) then { let rand = (toInt(sha256(rsaSign)) % 100) if ((0 > rand)) then ((-1 * rand) + 1) else (rand + 1) } else throw ("Invalid RSA signature") }rand is a random numberFirstly, the string that is a result of the RSA signature is taken. Then, it is hashed via SHA-256 (sha256(rsaSign)).We can’t predict the signature result and subsequent hashing. Thus, it is impossible to affect its generation. To get a number in a specific range (e.g. from 1 to 100), the conversion functions toInt and % 100 (mod analogue) are applied.At the beginning of the article, we mentioned the rsaVerify() function that allows checking of the validity of an RSA signature by a private key against a public one. Here is a part of GenerateRandInt (gameId, rsaSign):rsaVerify (SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)To start with, RSAPUBLIC public key and rsaSign string are taken. The signature is checked for validity. If the check is successful, the number is generated. Otherwise, the system considers that the signature is not valid (Invalid RSA signature).The server has to sign the game id using a private key and send a valid RSA signature within 2,880 blocks. The option is managed while the smart contract is deploying. If nothing happens in the stated time, the user wins. In this case, the reward has to be sent by the user independently. It turns out that cheating is unprofitable for the server because this leads to a loss. There is an example below.The user plays Dice Roller. He chooses 2 of 6 cube faces, with a bet of 14 WAVES. If the server does not send a valid RSA signature to the smart contract within a set time (2,880 blocks), the user will receive 34.44 WAVES.For number generation, we use an oracle, an external system rather than the blockchain. The server implements an RSA signature for the game id. The smart contract checks signature validity and determines the winner. If the server sends nothing, then the user would win automatically.This method ensures that manipulation is technically impossible. All Tradisys games are based on the algorithm described above — ensuring our games are fair and transparent. Everything can be publicly audited to ensure honesty.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditBlockchain RSA-based random was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 05

Node Tools Extension Launched!

The extension will notify full nodes about rewards and any operational failures, as well as automating revenue distribution to lessors.Waves Platform’s open protocol is maintained by full nodes and WAVES holders. Those who don’t have the required hardware and 1,000 WAVES can lease their tokens to full nodes. Nodes generate blocks, receive block rewards and transaction fees, and distribute these revenues between lessors.Nodes have different payout conditions, such as frequency, proportion of returns distributed, and additional tokens. Let’s see how popular nodes — Tradisys, Dodllnode and Wavescap Node — interact with their lessors.TradisysPayout frequency: dailyLeasing return: 100% of fees and block rewardsTradisys was launched in June 2018. The generating balance of the node is currently 5,254,993 WAVES, putting it in third place in the Waves ecosystem.The Tradisys team conducts votes among its lessors. In September, Tradidys members approved the activation of Feature 14 — Block Rewards and Community Driven Monetary Policy.DodllnodePayout frequency: weeklyLeasing return: 100% of fees and block rewardsDodllnode took third place in the ‘Game of Nodes’ competition and won a one-year lease of 400,000 WAVES. As a result, lessors’ payouts have risen to 149.75%. The generating balance increased to 1,534,735 WAVES (10th place).Dodllnode also conducts internal votes. The node distributes the Dodllnode token before each vote. Lessors send these tokens to one of the two addresses, depending on their choice. After the vote, all tokens are returned to lessors. Like the lessors of Tradisys, they supported the activation of Function 14.Wavescap NodePayout frequency: every 9,400 blocks (about a week)Leasing return: 100% of fees plus 95% of block rewardsWavescap Node’s team took second place in the ‘Game of Nodes’ competition and received a lease of 600,000 WAVES. Their generating balance is currently 951,702 WAVES (12th place).Wavescap’s voting mechanics are the same as for Dodllnode. Pool members vote for or against new functions using special tokens, which are distributed before each vote.Tradisys, Dodllnode, and Wavescap Node offer a great example for other ecosystem participants by holding these votes. We are eager to see more nodes like these ones.To make Waves nodes even more reliable and attractive to lessors we’ve rolled out a toolkit that will automate part of nodes’ workflow.Node Tools ExtensionPayouts can be configured according to the following parameters:The block from which distribution will startFrequencyPercentageNotification types:Node is not generating blocks. Possible reasons:The settings were changedBalance of less than 1,000 WAVESSmart account features were activated2. Node generated a block and received a reward3. Generating balance changed4. Payouts were distributedHow to installYou can find a detailed installation guide for the extension here.Coming updatesWe are working hard to improve existing tools and creating new ones. In the next update, you’ll be able to add an additional token for rewards. Nodes will be able to create “blacklists” of lessors.If you have found bugs or have ways to improve the extension, please write to Issues in Repository.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditNode Tools Extension Launched! was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 01

Waves joins Odyssey hackath...

Throughout the 2020 season, which will kick off on 7 November, Waves’ technologies will be available to Odyssey hackathon participants.Hackathons play a major role in shaping the future of technology, exploring new ideas and finding real-world applications for innovative solutions.Since 2017, Odyssey, a diverse global hackathon movement, has been run in Groningen, Holland, attracting thousands of people from all over the world to build technological solutions for a new and better society.Through the Odyssey Innovation Program & Hackathon, corporate, governmental and scientific organizations explore and discover the future by building it — together with other relevant stakeholders, experts, and some of the brightest teams from all over the world.At the Odyssey hackathon, new solutions to complex societal challenges are created with the use of technologies such as blockchain, AI and robotics. Odyssey’s underlying idea is that issues faced by contemporary society cannot be resolved by an individual organization or industry but require collaboration at a grassroots level and the creation of a new public digital infrastructure.For the 2020 hackathon season, Waves is joining Odyssey’s ecosystem, making its technology available to hackathon participants.Incidentally, Waves technology is no stranger at Odyssey hackathons. In April 2019, the Tradisys team was the hackathon’s winner in the Rethink Retirement track. Tradisys came up with a solution for a Dutch pension fund based on the Waves platform. This season, we hope to see Waves-based solutions presented by hackathon participants for a broad range of industries, from cybersecurity and critical infrastructure to nature and energy.The Odyssey hackathons’ new season will kick off on 7 November with the Polaris Summit, hosted in collaboration with the Dutch Ministry of the Interior and Kingdom Relations and TechLeap.NL (formerly StartupDelta) at the Hall of Knights in The Hague.The event will gather challenge stakeholders, hackathon teams and international experts to collectively set the direction for the season.Polaris speakers include three-times Nobel Peace Prize nominee Scilla Elworthy, MIT Senior Lecturer Otto Scharmer, and Internet Pioneer Pindar Wong, among others.Scilla Elworthy is known for her work in developing effective dialogue between nuclear weapons policy-makers worldwide and their critics. She founded Peace Direct to fund, promote and learn from local peace-builders in conflict areas, and was advisor to Peter Gabriel, Archbishop Desmond Tutu and Sir Richard Branson in setting up The Elders.Otto Scharmer, who wrote Leading from the Emerging Future: From Ego-systems to Eco-system Economics, is an action researcher teaching innovation, learning and leadership at MIT, MITx U.Lab and the Presencing Institute. He has delivered award-winning leadership and innovation programs for clients including Alibaba, Daimler and Google.Pindar Wong is the Founder of Hong Kong’s Smart Contracts Initiative that pioneered the Belt and Road Blockchain. He is a Bitcoin protocol enthusiast and volunteers to organise ScalingBitcoin.org. Wong co-founded the global blockchain research network Bsafe and organized Coala’s first Blockchain Workshop in Asia. Previously, he co-founded Hong Kong’s first licenced ISP in 1993 and was the first vice-chairman of ICANN.Polaris is the perfect setting to introduce the full line-up of tracks and challenges for Odyssey Hackathon 2020. This year, you can expect challenges from a variety of corporate, governmental and non-profit stakeholders, including: Vattenfall, City of The Hague, City of Groningen, Enexis (Nature 2.0), KLM Cargo, Dutch Police, International Council of Environmental Law, Dutch Blockchain Coalition, and many others. Each of the challenges will be linked to at least one UN SDG goal, meaning that the solutions the teams build at the hackathon could contribute directly to global sustainable development.Meanwhile, the Odyssey ecosystem is not just about applying new technologies or building new solutions. It’s about exploring new ways to collaborate, establishing relationships and building communities.The 2020 season’s pivotal moment, the Odyssey Hackathon, is scheduled to be held in Groningen on 2–6 April. Team applications will be open from 20 January until 24 February. Sign up for the Odyssey newsletter to be notified when the application period opens, and remember to check our news and updates.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves joins Odyssey hackathon ecosystem was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 10. 29

Ecosystem development strat...

We are introducing a new vision to unify the technologies of the Waves ecosystem.A while ago we announced a new stage in the development of the Waves ecosystem.The idea was to combine all the advantages of our public and private blockchains, while at the same time supporting high transaction speeds. While working on the Waves 2.0 white paper we realized that it made sense to describe our general approach to the development of the next generation of the Waves ecosystem first. A series of white papers on specific parts of the whole Waves Chains ecosystem is underway.Here’s what the ecosystem will look like:Interchain protocolWe are developing a special protocol that will bring blockchain interoperability to the Waves ecosystem. Initially, this protocol will simply connect blockchains within the Waves ecosystem itself. Later, it will be enhanced to enable interaction between Waves and the Ethereum blockchain, with its numerous native projects. We are confident that the implementation and integration of such a protocol will help not only the Waves ecosystem, but also the industry as a whole. After solving the problem of interoperability, we will be much closer to the widespread use of blockchain technology and its implementation for socially important applications.Public blockchain scalabilityWe already have a public blockchain on the Waves Platform that works well. As the number of users grows, greater scalability will be required. Sidechains provide some degree of scalability, but this will not be enough. We will therefore develop and implement sharding approaches into the main Waves network to further increase network performance and scale. Network interoperability combined with the scaling of individual networks is the optimal path for getting the best out of distributed ledger technology.Born to be a DeFi platformWaves Platform is already very well suited to the implementation of DeFi projects. There is no denying that finance is the best use case for blockchain technology. And most existing decentralized applications are, to one degree or another, financial in nature. There is no need or reason to resist this reality. Therefore, our public blockchain will be focusing on DeFi applications. Waves has excellent characteristics for this:– Fast transactions– Low fees– No gas– Built-in DEXTo this end, we have worked hard to create some outstanding tools for developers:– The Ride language, which was specifically designed for easy development and execution in decentralized environments. Ride is a concise, human-readable language that is powerful but non-Turing complete. Its key features (including lazy execution and a modern typed functional approach, plus flat fees and no gas) avoid the vulnerabilities of other smart contract languages and ensure reliable execution with a zero failure rate.– IDE. Waves is very developer-friendly, with an IDE for learning and sandbox development, and a Visual Studio Code plugin for advanced users.– Technical support. We provide technical support for developers and help for learning the Ride language. Here is our Web3 coding course: https://stepik.org/course/54415/promoIn short, it’s the ideal choice for DeFi applications.Service ChainsAnother important building block of Waves Chains is so-called Service chains. These serve a particular purpose, providing specific functionality for the chains interacting with them.An existing example of such a network is our current Waves Enterprise network, which is already used by a number of corporate projects.Additionally, we plan to create Oracle chains that will provide real-world data to blockchains, so our clients can use this information for whatever applications they wish. Some of the oracles we intend to connect in the future include:– Data oracles that will provide information on key markets (stocks, bonds, currencies, commodities), weather conditions, traffic volumes and events, population data, and so on.– Notary oracles that will provide notarized data or official information from state registers necessary for the work of certain corporate clients.– Bridge-chains connecting Waves Ecosystem to external projects such as Ethereum.– Bridge-chains connecting Waves Ecosystem to external projects such as Ethereum.Custom ChainsThis is our term for the many bespoke private chains that are created using Waves Enterprise technologies for corporate clients. These custom chains are essentially sub-chains (sidechains) that anchor into the Waves Enterprise Chain. Our partners can deploy as many custom chains as they want for each project and broadcast their encrypted private data to the Service Chain to ensure its safety and immutability.On top of that, custom chains will exist in an open setting as well. We plan to unify the development of public and private custom chains so that there’s a shared codebase and potential interoperability.A future worth working forAll of these chains will be tied together by our Interchain protocol, connecting them to external chains as well. The scalable and robust Waves mainchain is going to be the pillar of the whole ecosystem, with connecting chains (both public and private) having access to all the ecosystem’s instruments.In the coming weeks, we’ll be publishing a series of blog posts detailing further aspects of this ecosystem — including the Interchain protocol, Sharding, DeFi, and our Oracles chains.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditEcosystem development strategy: Waves Chains was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 10. 28

Rise of the Oracle

Blockchain oracles resolve the issue of delivering external data to the blockchain — but we still need to know which of them we can trust.In our article on the launch of the Waves Oracles directory, we discussed the importance of oracles for the blockchain. Decentralized apps cannot access data outside the blockchain. This problem is resolved by using oracles.The issue at stake is quite straightforward. If the execution of a dApp requires outside data, it has to be stored on the blockchain. To achieve that, small programs called oracles are created, which access relevant data from the outside world and record it to the blockchain.By the type of outside data source, all oracles could be divided into three categories: software oracles, hardware oracles and human oracles.Software oracles obtain data from the internet, such as temperature, prices for goods and services or flight and train delays. Information comes from online sources, such as APIs. An oracle extracts relevant data and records it to the blockchain. You can learn how to make a simple software oracle here.Hardware oracles trace real-world objects using devices and sensors. For instance, a video camera calibrated for line crossing traces vehicles entering a certain area. An oracle records the fact of entering the area to the blockchain. Based on that oracle’s data, a dApp’s script can, for instance, issue a ticket and deduct tokens from a vehicle owner’s account.Human oracles operate with data entered by humans and are considered most advanced because they offer an independent view of an event’s outcome.Recently, we introduced a tool that enables writing data to the blockchain under a set specification.The tool is very straightforward. You register an oracle card by filling out the specification and can then record data transactions to the blockchain under that specification. Read more about the tool in our documentation.However, data provided by oracles has to be trustworthy. Using just one oracle could cause problems. It’s vital to know if you can trust the source and if the data is up-to-date. Otherwise, there is a risk that an oracle can deceive users by deliberately providing false information to gain a profit.Let’s consider the example of an oracle providing information of a sports event’s outcome to a decentralized prediction market.The event in question is a UFC 242 fight between Khabib Nurmagomedov and Dustin Poirier. According to bookmakers, Nurmagomedov was the favorite with odds of 1.24, corresponding to a 76% probability of victory. Poirier was given odds of 4.26 (22%). The odds of a draw were 51.0 (2%).A script accepts bets on all three outcomes until it receives information on the actual outcome from an oracle. That information is the only trigger for distributing the winnings.We know that Nurmagomedov won the fight. But let’s assume a dishonest oracle owner planned a fraud and placed a substantial bet on the most profitable outcome, a draw. Once a large sum of bets has been accumulated, the dishonest oracle owner initiates recording of false information about a draw to the blockchain. The decentralized exchange’s script is unable to check the accuracy of the data and can only accept it. Subsequently, the script distributes the winnings between the bettors in accordance with the outcome data it has received.Fraud of this kind could potentially be highly profitable for a dishonest oracle creator. If the anticipated profit is higher than an honest oracle’s predicted revenue and the risk of legal consequences is low, the chance of fraud could substantially increase.One way to address this is by requesting data from several oracles and establishing consensus from the received outcomes.There could be several types of consensus:All oracles supplied the same information.The majority of oracles supplied the same information (2 out of 3, 3 out of 4, etc.).The median of the oracles’ data is calculated (the maximum and minimum outcomes could be discarded before calculating the median).All oracles supplied the same information within a previously agreed deviation. For instance, exchange rates from different sources could differ by 0.00001, and obtaining exactly the same data would be impossible.Only unique outcomes are selected.Let’s apply this to our example. If a ‘3 out of 4’ consensus type is used, false outcome information on the Nurmagomedov vs. Poirier fight from one oracle would not have an impact on script execution. It would be executed based on information about Nurmagomedov’s victory, with the winnings distributed based on that data.However, if a dishonest person owned 3 out of 4 oracles, it would be still possible to rig the outcome data.To maintain oracles’ integrity, various concepts for oracle rankings or fines for providing false information, as well as incentives to provide accurate information, could be introduced. But none of them would be protected from ranking rigging or a dishonest majority.So, do we really need more complicated concepts, or would it be better simply to have a consensus tool that allows us to take five oracles supplying relevant data — as if off a supermarket shelf — set the consensus type and get a result?For instance, a decentralized app needs Celsius temperature data. We will find four oracles supplying that data in the oracle directory, set the consensus type as «median» and make a request.The oracles provide values of 18, 17, 19 and 21 degrees. There is an apparent discrepancy in the data, and a three-degree difference could have an impact on script execution. The service processes the received data and comes up with a median of 18.75 degrees, which is sent to the dApp’s script.In any case, the decision of whether to trust data from a single oracle or build a consensus from several oracles is up to the user.Overall, data oracles are a new field. This is currently at a stage where users can have an impact on the direction in which it will develop. We would therefore like to hear from you. Tell us if you think a consensus tool described above is needed and share your ideas about the directions in which the oracle field evolve.Provide your feedback in comments and in our official Telegram group.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditRise of the Oracle was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 10. 21

Waves community-driven mone...

It turns out that increasing block rewards indefinitely does not lead to ever-increasing inflation.With the launch of Waves’ community-driven monetary policy, Waves nodes are able to change the rewards distributed with every generated block. This is a great step forward in handing over control of the protocol to the community. But does giving away responsibility for something as important as monetary policy invite serious unintended consequences?‘Wisdom of the crowd’ or ‘Tragedy of the commons’?There are two schools of thought when it comes to handing decision-making over to the community. One is the ‘Wisdom of the crowd’: the sense that collective decisions are often better because they draw on a wide range of opinions and information, take into account many factors that an individual or small team would not know or care about, and reduce the ‘noise’ and cognitive bias of centralised decision-making.The second view is the ‘Tragedy of the commons’. This view holds that asking large numbers of people to make key decisions on matters they may not fully understand is a bad idea, because the majority are likely to opt for a solution that suits them but not necessarily everyone else.In this instance, there is a clear risk. Obviously WAVES holders like receiving higher rewards for mining and leasing their coins. Humans are psychologically programmed to prioritise short-term rewards over long-term ones. (For good reason. In an evolutionary context, finishing the shelter you’ll need to survive the winter comes a clear second to making sure you have enough food to survive the week.) So what’s to stop them from increasing block rewards at every opportunity, and turning Waves into a massively inflationary protocol — eroding its value and ruining it for everyone?This article explores that scenario. The conclusion is that there is, in fact, no risk of this happening — for reasons we’ll examine below.Built-in limitsWhen we crunch the numbers, it turns out that Waves can never be hyperinflationary. In fact, over time, inflation will drop — even in the ‘worst case’ scenario that block rewards are increased whenever possible.The reason for this is that the community still do not have complete control of the protocol. It’s a little like someone saying, ‘You can drive as fast as you like on this road’. Actually, you can’t. You can put the pedal to the metal, but you’re still limited by the top speed of your car. In the same way, Waves hands over control of its monetary policy to its community. But the terms of that control are still restricted. Specifically, the Waves protocol only allows block generators to increase block rewards by 0.5 WAVES at a time, and only every 100,000 blocks.Block rewards start at 6 WAVES. Together, these limitations mean that Waves can never be hyperinflationary.ExampleThe chart below shows what happens in the maximum-supply scenario — an increase of 0.5 WAVES in block rewards every 100,000 blocks — as well as what happens when block rewards are maintained indefinitely at 6 WAVES as a ‘benchmark’. (Of course, it’s also possible that the community will opt to decrease block rewards, but we haven’t shown this scenario.)Chart: Waves inflation with static and increasing block rewardsWaves begins with total supply of 100 million WAVES. Over the first 100,000 blocks (around 10 weeks), 600,000 new WAVES are created. Since there are 525,600 minutes in a year and Waves has a block time of around one minute, that represents an annualised increase (inflation) of 3.15%.Then block rewards are raised to 6.5 WAVES for the next 100,000 blocks, or another 650,000 WAVES for this period. Since at the start of this period total supply is now 100,600,000 WAVES, this represents annualised inflation of 3.4%. And so it continues. However, even with increasing block rewards, the new WAVES represent a lower and lower proportion of the existing — and rising — supply.Inflation peaks at 8.5% after around 5 million blocks (9.5 years), by which time total supply has doubled to 200 million WAVES. It then begins to fall again.Inflation will fall to just 2% after 50,600,000 blocks, though this will take almost a century. (And as Keynes said, in the long run we are all dead.)Crypto and inflationEven if supply is increased at the maximum possible rate, Waves’ inflation will never be more than 8.5%.While 8% is a lot by conventional central bank policy standards — most central banks target 2% inflation, with varying degrees of success — it’s low compared to ‘inflation’ in the early years of PoW coins, including Bitcoin, and it’s low for a rapidly-expanding ecosystem. Inflation only results in the debasement of the currency if it does not result in increasing economic activity and expansion.Of course, many members of the community will not be comfortable with any inflation at all. A large proportion of crypto-adopters are interested in digital money because they are dismayed with QE and fiat money printing. This is a valid opinion, and these members can vote to reduce block rewards with their WAVES. Those who run a node directly can vote to decrease rewards by 0.5 WAVES each 100,000 blocks. Those who prefer not to run a node themselves can lease their WAVES to a node that supports a decrease.It is impossible to say at this point what the community will vote for — increasing, decreasing or static block rewards. But it’s interesting that even if holders vote for what central banks would call the loosest possible monetary policy, annual inflation is always capped.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves community-driven monetary policy was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 10. 17

Waves Keeper: Making Conven...

Waves Keeper places the highest importance on convenience. Since our browser extension is becoming more popular, our community has begun to wonder just how reliable our solution is. This article aims to explain the product and address any concerns.Waves Keeper is a browser extension that allows you to manage your private keys and lets you confirm transactions online without exposing any sensitive information to the web. Broadly speaking, it is an improved local key keeper.Also, it is a secure way to connect dApps with your Waves Wallet. The extension allows authorisation with one click. There is no need to place a SEED phrase to the clipboard or any site.Encrypted storageSome people think that local storage is not safe enough, because dApps have access to it. This makes some sense. Even browser developers advise you not to store sensitive information there.We keep your SEED phrase in encrypted form inside your local browser storage. Here’s how:The browser creates a separate storage area for the extension that is inaccessible from the outsideThe SEED phrase is stored there, encrypted by the AES algorithmWaves Keeper password is used to decode the SEED phraseIn other words, private data is hidden from anyone except your extension. It is stored locally on your computer. Thus, no one can get to your funds unless they have access to your computer and your Waves Keeper account.You can find our encryption code here, and see how it is used here.Transaction signingTransaction signing is a formal action on a blockchain. It doesn’t require you to enter private data.Any transaction needs a user’s permission to be signed. The signature is created using the private key. After signing, the transaction is recorded on the blockchain. In turn, the dApp that made a request receives only public data:Public keySignatureTransaction dataAuthorizationWhen you start to work with new dApps in the Waves ecosystem, a service has to check that the data belongs to the current user. Verification is carried out using public data:Public keySignatureSEED phrase cannot be accessed by the dApps on the web, giving you peace of mind that your funds are safe at the point of authorization.Please be carefulRemember that Waves Keeper’s security depends primarily on you. You work with Waves Keeper via PCs and devices that have limitations and vulnerabilities. Your OS or browser could have backdoors, for example.Because this is the case, we cannot guarantee the complete safety of your funds. Here are some useful tips to make data leakage less likely:We’ll never ask you to share your private key or SEED phrase unless you import your wallet. Never trust any site that asks you to enter your private information.Always check the address in the URL bar. When working with Waves Keeper, only use one tab at a time to make transactions and keep the extension locked when you’re not using it. This will reduce the risk of phishing attacks.Create a strong Waves Keeper password. If your computer gets a virus and data is leaked, it is easier for hackers to decode a weak password.Every action needs permission. Read carefully any messages with transaction data in Waves Keeper. Don’t blindly sign each transaction.Don’t forget to update your OS and installed applications regularly.Also, make sure you hold large amounts of WAVES or other Waves tokens in cold storage like a Ledger. Use Waves Keeper only for interacting with dApps.We regularly perform security audits and respond quickly to threats. If you have any feedback about how to improve Waves Keeper, let us know in our Telegram channel.Forthcoming updatesFinally, we are planning to launch a mobile version of Waves Keeper. The world of dApps will be available on your phone! The exact date will be announced in our social media. Stay tuned!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves Keeper: Making Convenience Secure was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 10. 07

Waves’ staking policy and b...

Feature 14 — Block Rewards and Community Driven Monetary Policy — has now been approved by block generators and will shortly go live on mainnet. As we move towards creating a sustainable, self-regulating monetary system, we’d like to give an overview of the options for collecting revenues on the Waves platform.Blockchain is built on the principle of decentralization, but no platform to date has taken this to its logical conclusion. While network infrastructure may be dispersed, network properties are typically centrally decided and hard-coded. On 7 October, Waves Platform will see the activation of a protocol that will allow the community to act as the decentralized analog of a central bank’s monetary policy committee.Block rewardsBlock generators’ revenues are set to increase significantly thanks to the introduction of a block generation reward, on top of the current transaction fees. This will bring block generators’ revenues up to a target figure of around 5% annually.Feature 14, Block Reward and Community Driven Monetary Policy, has now been approved by block generators and will be activated on mainnet in the next few days. This feature essentially hands control of Waves’ monetary policy to block generators and the community, who can collectively decide whether to increase, decrease or leave block rewards as they are. The initial block reward will be 6 WAVES.For those who wish to take advantage of this new development, there are two main options: running a full node and mining yourself, or leasing your WAVES to a mining node.MiningMining is generally the best option for those willing to install and run a Waves node. For mining, you will need to maintain a node balance of at least 1,000 WAVES. Additionally, you will need to factor in hosting costs for your server, which you can rent from Amazon or any other cloud provider. You don’t need anything too fancy — 2 vCPUs, 4 GB RAM and 80 GB storage should be enough. As an example, Digital Ocean charges $20 per month for a Droplet with these specifications.Block generators collect 40% of transaction fees for the generated block and 60% for the previous block. This 40/60 ratio is due to the specifics of the platform’s Waves-NG block generation protocol.Block generators’ revenuesIn recent weeks, Waves block generators have seen their revenues from transactions increase, thanks to the launch of the programming language Ride and the growing number of dApps on the Waves Platform (see above).Revenues are now set to increase further. Assuming the initial block reward of 6 WAVES is maintained, rewards will increase to around 5% per year. (In practice, this may change since full nodes will vote every 100,000 blocks whether to keep this the same, raise it or lower it.)LeasingThose who do not want to install a node themselves and pay the running costs can still collect revenues by leasing their WAVES to other nodes. By doing so, WAVES holders can not only generate income but also help make the network more secure: the greater the proportion of total tokens leased out, the more expensive an attack on the network will be.Different nodes will offer varying proportions of the WAVES they receive as rewards to lessors, as well as their own tokens and other benefits. We will explore this further in a future article.Stay tuned for more developments!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves’ staking policy and block rewards was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 10. 03

Farewell Party for MRT

It’s the end of an era — and the beginning of a new one. Win prizes as we celebrate the retirement of MRT and the start of a new phase in the decentralization of Waves Platform.Miners’ Reward Token (MRT) has been an important part of the Waves economy for the past three years. But there’s no standing in the way of progress. Just as horses were replaced by faster, more powerful automobiles, so too must MRT give way for the more sustainable, elegant and decentralized solution offered by Waves’ new monetary policy governance system.Just like your favourite horse, we want to give MRT a proper send-off to celebrate its long and useful service before we bust a cap in its head and haul it off to the glue factory. That’s why we’re holding the MRT retirement party, with games and competitions to help us mark the beginning of the new era.FarewellMRT was launched as a means of incentivizing miners to secure the network, and was issued to nodes with each block generated. It was always intended to be a temporary solution, although once all MRT were distributed, Waves conducted daily buybacks of 500 WAVES’ worth of MRT to continue paying miners.Obviously this is not sustainable, and with the advent of proper block rewards, we no longer need a centralized solution like MRT. Now that Feature 14, Block Reward and Community Driven Monetary Policy, has been approved, MRT has served its purpose and we want to thank miners and holders as we transition to the new system.We plan to organize a sixty-day “farewell” party for MRT, in which holders will be able to win prizes totalling 1 million WAVES in leases. The games will take at least two forms:A FOMO game similar to the well-known “Fifth Element” game, with 7,000 WAVES in leases as daily prizes. The winner will be the last person to buy a ticket.Two lotteries based on a decentralized randomizer, with prizes as follows:1 x 40,000 WAVES2 x 30,000 WAVES3 x 20,000 WAVES4 x 10,000 WAVES18 x 5,000 WAVESThe probability of winning the lottery will be proportional to how many tickets entrants purchase, using MRT. The lotteries will be conducted on 13 December and 13 January.The total budget of the farewell party will be distributed in leases for a period of 550,000 blocks (just over a year). So, check your wallets, dig out your old MRT tokens and get ready to win some leases! Before the start of the party, we’ll publish a post with details and specific links. Stay tuned!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditFarewell Party for MRT was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 10. 01

Game of Nodes Winners Annou...

The competition was a huge success, significantly improving the decentralization of the Waves network.Game of Nodes has ended and it’s time to announce the winners!Decentralization is critical for the health and success of any blockchain project. We launched our eight-week competition at the end of July with the aim of increasing both the number of mining nodes on the Waves network, and the amount of WAVES leased overall.Overall, more than 50 nodes were added to the Waves network in the period from 24 July to 18 September, bringing the total to over 400. A total of 209 nodes participated in the competition. Moreover, 1.5 million WAVES were withdrawn from exchanges to external wallets to be leased. A further 6 million WAVES changed their lease, cancelling their lease to one node in favour of a better deal. In all, this was a fantastic outcome for the security and decentralization of Waves.Three winnersWhile there were many new nodes, only three could win prizes. The nodes that made the greatest gains according to the competition’s formula were:Inprofit (3P4QYFDHZqLw94MY1XNEwxdXpFiDuaLjTDu). Score: 108.09Wavescap (3PGobRuQzBY9VbeKLaZqrcQtW26wrE9jFm7). Score: 93.91Dodllnode (3PLp1QsFxukK5nnTBYHAqjz9duWMriDkHeT). Score: 91.52These nodes win one-year leases of 1 million WAVES, 600,000 WAVES and 400,000 WAVES respectively, and are allowed to keep all of the revenues generated from these leases! Leases will start on 2 October 2019. You can find full data for the competition on Airtable.Not so funny partWe particularly want to mention Wavescap. At one point, this node was a clear leader in the competition and looked set to win the top prize. Unfortunately, Wavescap opened the API to their node without changing the default API key, making it vulnerable to attack. While only a small amount of funds was held on the node (most was in leases) and the loss was limited, the wider impact was to knock them off the winner board. Wavescap then fought hard to regain their spot, eventually taking back second place. We also want to state that Waves has added an extra level of protection from such user error in the next node update.Anyway, congratulations to the winners, and a big Thank You to everyone who took part in Game of Nodes!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditGame of Nodes Winners Announced! was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 09. 23

Waves introduces governance...

In another step towards sustainability and financial stability, the community will now make major decisions affecting block rewards and coin supply.It is time to improve Waves’ economic model, making it more balanced, democratic and self-sustaining. Speaking more broadly, it is time to make the crypto space work as a real economy, rather than effectively existing on donations.Currently, our monetary system is essentially deflationary, since the number of issued tokens is limited. The use of a Proof of Stake consensus algorithm leads to some WAVES being withheld from circulation in full nodes. Similarly, some tokens are withheld because of leasing, and with the arrival of sidechains yet more tokens will be locked up and removed from circulation.We recognize that there are a range of views around the role and effect of the money supply within an economy, and the desirability of changes to that supply. At present, Waves’ money supply is fixed and unalterable, centrally decided at the launch of the network. The community can develop countless applications and use cases (and we encourage them to do so!), building a thriving economy on the Waves platform. And yet, they have no control over the monetary supply that underpins that economy.Ultimately, this may prove unsustainable. In any case, we believe it is better to decentralize monetary policy and hand responsibility for this task to the community. To these ends, we propose a functionality to enable a new approach to token issuance, in order to support transparent, collective decision-making on the best way forwards.Block generation rewardsA major step towards the long-term sustainability of the Waves platform is the introduction of a mining reward for each generated block — the size of which is to be decided by the community. The reward is expected to boost demand for leasing WAVES, attracting new participants to the ecosystem. The reward is also likely to attract new block generators (i.e. new nodes) to the Waves ecosystem, expanding it and boosting demand for WAVES.Unlike the Proof of Work consensus algorithm, Waves’ Proof of Stake consensus doesn’t require expensive computing equipment for block generation: an instance with Dual-core processor, 4 GB RAM and 50 GB (SSD) storage is sufficient. We therefore expect most of the funds received as block generation rewards to be used for leasing. As block generators don’t need to continually upgrade costly equipment, they will instead raise their stake to maintain their chances of block generation. Unlike PoW miners who are after powerful equipment, WAVES block generators are after a larger stake.To make WAVES mining attractive, we suggest a reward of 6 WAVES for every generated block, which corresponds to target annual revenues of around ~5.3% (in WAVES) taking into account the possible increase of the generating balance.Block generators’ annual revenue will be calculated by the formular (%) = (b * n * d) / gr is revenue (%)b is the number of blocks generated in 24 hoursn is the block generation rewardd is the number of days in a yearg is generating balance (http://dev.pywaves.org/generators/)Community-driven monetary policyAs we aim to make our platform more democratic and community-driven, the size of block rewards will be determined by the Waves community through voting — thus introducing a form of decentralized monetary governance. In effect, this process will be the decentralized equivalent of a central bank setting interest rates. However, in our case, the process is absolutely transparent and driven by the community, as opposed to a regulator or monetary policy committee making key interest rate decisions.WAVES block generators will be able to vote to change the size of the block generation reward. The established block reward will be valid for 100,000 blocks, which roughly corresponds to 69 days. The final 10,000 blocks (roughly a week) of each 100,000 block period will be a voting period for the following 100,000 block stretch.During the voting period, block generators will vote for higher, lower or unchanged rewards by writing their decision to all created blocks. The reward can be changed in increments of 0.5 WAVES at a time. For the reward size to be raised or reduced, over 50% of all block generators will have to vote for it. Otherwise, the reward size will remain unchanged for the next period.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves introduces governance for decentralized monetary policy was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 09. 19

Waves team runs events at T...

One of the crypto space’s best known and respected gatherings ran from 9–16 September, focusing on the latest and most popular technologies.Earlier this month, Blockchain Week Tel Aviv saw a group of prominent blockchain entrepreneurs, visionaries and academics gather together to learn and share, including Ethereum founder Vitalik Buterin, ConsenSys CEO Joe Lubin and Founder and CEO of eToro, Joni Assia.The event consisted of several conferences, workshops and hackathons.The D&DD Summit centered on issues of crypto adoption, dApps and decentralized financial systems.Friday the 13th Crypt-O-Mesh aimed to push the boundaries of what we typically understand as “blockchain”, introducing a number of disruptive ideas.BuidlTLV hackathon brought together passionate local and global talent to build dApps and compete for prizes.Ethereal Summit championed those building the infrastructure and applications driving blockchain tech, as well as the decentralization movement’s cultural and human aspects.Issues discussed at TLVBV ranged from the future of decentralized finance and possible killer apps for blockchain to the pros and cons of Facebook’s highly anticipated cryptocurrency, Libra.Waves at TLVBWIlya Smagin, head of development for Waves smart contracts, led a workshop entitled “Full-cycle dApp development on the Waves Blockchain”. The workshop’s main focus was on the basics of decentralized apps development, from useful tools to coding using Waves’ smart contract language, Ride.Aleksei Pupyshev, Waves’ chief technology evangelist, took part in D&DD’s panel discussion. He outlined different programming approaches to decentralized finance (DeFi) application engineering, including DAOs and algorithmic stable coins. The panel also touched upon whether we really need Turing-complete smart contract languages to implement Web 3.0 applications, and how to explain the decentralized web to non-blockchain developers and non-tech people.Waves’ Developer Advocate, Inal Kardanov, ran a workshop entitled, “How to create a secure e-voting system using Waves’ blockchain” at Ethereal Summit. He discussed some of the challenges with e-voting systems, explaining how the first Ethereum-based voting system in Moscow was hacked and what can be learnt from that incident to avoid common mistakes in the design of future voting systems.Inal also took part in the Ethereal Virtual Hackathon with the challenge task “Sharing Economy Tokenization: Creating a Decentralized Platform Using Waves Blockchain.”“Many people think that blockchain as a technology stopped developing a while ago, that there have been no innovations in the last few years, but we can definitely say that there are many innovations, ideas, research and collaboration in the industry,” Inal commented.Overall, Tel Aviv Blockchain Week was insightful and fun. See you soon at other major global blockchain events!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves team runs events at TLVBW was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 09. 18

Diversity.Hack report

7–8 September saw Waves sponsoring Diversity.Hack, one of the largest and most far-ranging Moscow hackathons. We held this event alongside Phystech.Genesis, a project launched three years ago by MIPT graduates.The 30-hour hackathon brought together more than 200 participants, including both students and experienced developers. Members of Russian Hack Team also joined the contest.Participants were offered three tracks, provided by Waves, Dostavista and New Cloud Technologies. Our track was the most popular, and required hackers to implement a user-friendly mobile dApp using the Ride programming language and Waves client libraries.Before the start of the event, we conducted two workshops to help participants engage with their tasks:‘How to use Waves blockchain’‘Ride Syntax Details’WinnersWe are thrilled to announce the winners and their projects. A total of around USD $1,500 and 400 WAVES in prize money was divided between the teams:‘On the wave’ made a decentralized marketplace with tokenized event tickets. Prize: $760 and 150 WAVES.2. ‘EasyChain’ developed a mobile marketplace with non-fungible tokens (NFTs) and auctions. Prize: $450 and 130 WAVES.3. ‘MoreJust’ implemented a payment system for Auchan, a multinational retail group, using QR codes and WAVES. Prize: $290 and 120 WAVES.We want to thank all the participants for the extraordinary energy and interest they contributed to this competition!To encourage three more promising teams, we awarded runners-up prizes of 100 WAVES each.Common mistakes & tipsThere were a number of widespread mistakes that several teams repeatedly made. In some cases, this prevented them from completing their projects. Based on these, we have prepared some useful tips for future hackers:Several teams forgot that Ride exists within the Waves blockchain. The programming language does not have access to the world outside the network, and so must be used with Oracles to engage with external information.Some participants did not engage with the workshops provided before the hackathon. They started to code without fully understanding the technology. Whenever possible, attend the workshops and read the documentation to help prepare — it will give you a competitive advantage!Do not forget to mention which of the given SDKs or APIs provided for the hackathon you have integrated into your product, and why.Discuss any concerns you have with the mentors. They will help you to implement the technology and give you advice on how to modify your product.Don’t spend too much time planning and trying to work out every detail in advance — just get building! You’ll find that new ideas and solutions frequently arise in the course of actually implementing your project.The most important point to remember is that at the end, you must present a fully working prototype. Only if you do so will you be eligible to claim a prize.Upcoming eventsWe are conducting a workshop in Zurich, scheduled for 19 September. You will learn how to design and deploy your first smart contract using the Ride programming language and Waves blockchain.All levels of expertise are welcome, although it would be helpful if you have some programming experience. You can read about the event here.We will also be holding a hackathon during the SF Blockchain Week 2019. Feel free to join the competition and put the tips above into practice. Good luck!Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditDiversity.Hack report was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 09. 13

Waves launches new token ma...

The functionality will enable issuers of highly-rated tokens to set a ticker for their digital assets, as well as adding a website link and including a more detailed description of the token.In late April, we launched Waves Token Rating: a collective, community-driven ratings score for tokens issued on the Waves Platform.Over the four months since then, Waves Token Rating has emerged as not only a rating system that reflects the community’s opinion about tokens, but also as a convenient directory of most popular tokens.Since the launch of Waves Token Rating, almost 900 tokens have been scored (out of almost 30,000 that have been created on Waves), which corresponds to roughly 3%; 4,000 votes have been cast, with an average voting stake of 3,000 WCT.We are constantly working on improving the ratings system and are glad to announce that token issuers will now be able to set tickers for their tokens. A ticker is a token’s unique identifier, used by exchanges and as a currency code by users.This is how it works. If you are a token issuer, click on the account menu in the upper right corner of the Waves Token Rating website and choose My tokens. On the left side of the screen, you will see a list of all tokens issued from this account. For tokens with a high rating score, a token management menu will be available.By clicking on it, you’ll be able to create a unique ticker for your token, which can consist of up to six uppercase characters. Please, note that once a ticker has been created, you won’t be able to change it.On the same menu, you will be able to add a link to a website and a more detailed description of your token. The link and detailed description will only be displayed on the token’s card within Waves Token Rating, next to the description from the token issue transaction, while the ticker could also be used by outside services and third parties such as exchanges or dApps, thanks to the ticker oracle.The ticker oracle collects information from four sources — BetterTokens, TrustAmust Verification Center and Waves Data Service — as well as from tickers added by token issuers using Waves Token Rating’s new feature.Meanwhile, among new features we plan to add in the future is the option of adding a logo to highly-rated tokens. Stay tuned, and we’ll be back with more news from Waves Token Rating soon.Read Waves News channelFollow Waves TwitterWatch Waves YoutubeSubscribe to Waves SubredditWaves launches new token management feature was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 09. 12

Waves unveils experimental ...

To eliminate possible blockchain rollback issues on our testnet, we’ve created the Waves stagenet as a testing ground for innovation.Previously, all new Waves functionality was published on testnet before it was available on mainnet.However, when developing Waves-based projects on testnet, users could face problems due to the rollback of blockchain height caused by the instability of the testnet version.To avoid this kind of issue, we’ve launched a new experimental blockchain: the stagenet. All new, experimental functionality will be now published on stagenet.Starting from the upcoming release, the Waves testnet and mainnet will have the same versions and will be updated simultaneously. You can now use testnet without fear of a blockchain rollback.Join the new stagenet to keep abreast of all innovations and be among the first to test new functionality.Stagenet is a fully functioning Waves blockchain but, like on testnet, on stagenet the WAVES token has no value because it can be received for free. Stagenet will help developers to test the functionality of new versions of Waves before they are deployed on testnet and mainnet.To use nodes on stagenet, you will need to:Download the latest version of the Waves node softwareDownload waves-StageNet.conf (Skip this step, if you use the DEB package for a node installation)Install the node using the manualAfter that the node will begin to download blocks. To speed up the process, you can import blocks using this manual.If you’d like to become a miner on stagenet, please send a request for WAVES tokens for leasing.To get WAVES tokens for your stagenet account use the faucet.Stagenet has also been added to:Waves ExplorerWaves IDE. To use IDE with stagenet, specify ‘Custom Nodes’ as ‘https://nodes-stagenet.wavesnodes.com/’ and ‘Network byte’ as ‘S’ in the Settings.Waves Keeper. To use Waves Keeper with stagenet, specify ‘Node address’ as ‘https://nodes-stagenet.wavesnodes.com/’ and ‘Matcher address’ as ‘https://matcher-stagenet.wavesplatform.com’ in Keeper’s settings.If you have any questions, feel free to ask them in Discord on the stagenet channel.Read Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditWaves unveils experimental network was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 08. 30

Waves DEX: ERC-20 update

Waves DEX is a home for a huge number of native crypto assets. Now, we are opening its new era, adding support for ERC-20 tokensWaves DEX users are familiar with Coinomat, a gateway for the balance replenishment on the exchange. Recently, Waves team launched a new gateway with Vostok (VST) and Ergo (ERGO) support. Today, the gateway functionality extends for ERC-20 tokens.Waves DEX will receive a new wave of traders and assets that will affect positively on WAVES and other listed tokens. Soon, you will see new trading pairs with ERC-20 tokens.ListingLast year, we conducted voting for listing ERC-20 token. Bancor (BNT) won the voting and became the first candidate for listing on Waves DEX. So, we made it. All technical features are tested. Start of BNT trading is scheduled for August 22 at 11:00 UTC.The next asset that can be added via gateway is ETH. Then, we will add BTC support. It is scheduled for September.Fees and limits for BNTWaves DEX users can deposit BNT on their balances with no fees. At the withdrawal, there will be a fixed fee, 0.4 BNT.Deposit and withdrawal limits:Min — 2 BNTMax — 100 000 BNTNew ERC-20 tokens will be added gradually. Each time Waves community will take part in choosing the next listed token. We will announce new listed tokens on our social media.Stay tuned!Read Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditWaves DEX: ERC-20 update was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 08. 22

Join the Waves Team at Berl...

We are pleased to announce that the Waves Team will be attending the 2nd Berlin Blockchain Week, which will take place on August 18–29. This year’s Blockchain Week promises to be even bigger and better than the well-received 2018 edition, and Waves will be there among a wide array of blockchain developers, hackers, entrepreneurs, and industry leaders.Here is a rundown of events at Blockchain Week where you’ll find the Waves Team:Web3 SummitBerlin Blockchain Week opens with the Web3 Summit, will take place at Funkhaus Berlin on August 19–21. This summit gathers developers, researchers, and protocol developers who work toward building a fully functional and user-friendly decentralized web.Waves CEO Sasha Ivanov is scheduled to speak at Studio 5 on Tuesday, August 20, at 13:10 CEST. (11:10 AM GMT) Ivanov will talk about the problems facing the blockchain industry, Waves’ methods of solving these problems, and plans for the future of Waves.ETH ConferenceThe Waves Team will also participate in ETH Conference, a global developer conference at the Technische Universität Berlin from Wednesday, August 21, to Friday, August 23. ETH Conference brings together hundreds of blockchain and smart contract developers, researchers, and enthusiasts.Get a ticket here!Ilya Smagin, lead developer of Ride, the programming language that powers Waves’ smart contracts, will participate in the Cross Collaboration Panel on August 21 at 12:10 CEST. (10:10 GMT)ETHBerlinZweiSmagin and Waves Developer Advocate Inal Kardanov will conduct a workshop on Waves dApps at ETHBerlinZwei on Friday, August 23 from 11:20 to 12:00 CEST. This workshop will take place in Auditorium 2 at the Technische Universität Berlin.At this workshop, Smagin and Kardanov will take a deep dive into our RIDE programming language, analyzing complex dApps implemented in the Waves blockchain and discussing the main pitfalls with dApp development, ways to optimize dApps, and features of the Waves protocol that all developers should know. The workshop will focus on 3 examples of complex dApps: DAO, OraclesConsensus, and PoW-in-PoS dApp.ETHBerlinZwei HackathonThe Waves Team will also have its own task at the ETHBerlinZwei Hackathon, where developers can try their hand at solving problems on the Waves blockchain, get acquainted with the ecosystem, and learn our RIDE language. Kardanov will speak at the opening of ETHBerlinZwei Hackathon at Factory Berlin Görlitzer Park on Friday, August 23 at 18:00 CEST. The hackathon then begins and will run through August 25. The hackathon prize fund: 1750 WAVES.Waves will also have a booth on the hackathon floor where anyone can talk to team members, learn more about Waves, and have a great time. We will also have an interactive panel with a presentation and a quiz game where our guests will be able to test their knowledge and win prizes.Berlin Blockchain Week promises to be an exciting event! We encourage all of you to join the fun by following our social media channels. We’ll post pictures and keep you updated throughout the week.Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditJoin the Waves Team at Berlin Blockchain Week, August 18–29 was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 08. 16

Item Market is Launched!

We present Item Market, a platform that brings a new life in the gaming realm putting players and developers on the same sideLast fall, we launched a gaming project that is bearing fruit and has grown into something more. Blockchain shifts the centralized paradigm taking away from enterprises data monopoly. What is yours is really yours and anyone can prove it. This brings the relationships between gamers and developers on a new level providing an open economy in the sphere. So, with this in mind, we created Item Market.Item Market is a decentralised platform where everyone can tokenize, sell and buy somebody’s in-game items in the form of tokens. Right now you can join two games but there will be much more. One of them is a collab with famed YouTube video ‘Nyan Cat’.How does it work?Everyone remembers CryptoKitties. Each CryptoKitty is a Non-fungible token (NFT) on the Ethereum blockchain. We used the same approach. And with Node 1.0 update it became possible to issue NFTs on the Waves Platform.We created an SDK to make blockchain integration easier than ever, enabling developers to plug NFTs straight into their games. Next functions are available for you:Item creationCreation of an item is integrated into a platform. Everyone can create NFT and observe it on items list on their dApp. All you need is installed Waves Keeper for your browser. The process of creation is separated into six steps:Choose the network. There are two options to issue items, on the mainnet or testnet. For development purposes use testnet only.Creation mode. The library allows creating items from the console only in wizard mode. In the future, we will add more options.Name your item.Link the image URL. Please note, all images are stored off-chain, we store only full URL in the blockchain.Point the quantity. The maximum value is 99999999999 (almost a billion).Seed file path. Path to a file which contains a seed phrase of item owner. All the tokens should be issued from some blockchain account, usually, it is an account of a game developer. To issue a token (that is to say to send a transaction) we have to sign it using seed phrase.Congratulations! Now you can embed token to your dApp or website. Also, you can create items in our JavaScript or TypeScript code.Item listsAll your items are sorted by game folders. You can see the item name, its quantity and image. Also, there is a search field that helps you to find items faster.Buy & SellItem Market marketplace is based on a Waves DEX which means that you can trade and exchange your items swiftly and securely. All advantages of centralized exchanges are combined with complete control of your funds. Everyone can list NFTs on the marketplace.SupportWaves team will continually help developers to implement Waves functionality into their games. There will be a technical tutorial, articles and other advices for those who want to join decentralized gaming.Also, we remind about our initiative Waves Labs with 1 000 000 WAVES prize fund for supporting talented developers and promising startups focused on the decentralized technologies that will underpin Web 3.0.Master Web 3.0 technologiesFinally, we are launching a major campaign to grow our developer community and show everybody how cool coding with Ride is! We are running free educational courses for anyone interested in acquiring hands-on knowledge of Web 3.0 technologies.We are pioneering Web 3.0 with this course. If you want to be at the forefront of the next-generation Web, grab this unique chance and step into a decentralised future with us!Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditItem Market is Launched! was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 08. 16

Waves Labs to Use DAO as Sa...

In late June we launched RIDE on Waves’ mainnet. Now, we are ready to announce a major new dApp built on RIDE, funded by a grant in partnership with Waves LabsVentuary DAO is a platform where promising startups in their earliest stages can gain support. Broadly speaking, Ventuary-DAO is a sandbox dedicated to filtering dApp ideas and stimulating the Waves community to take part in Web 3.0 adoption.The decentralised infrastructure encoded into the platform entirely fits with the ethos of Waves. Now, Waves Labs has enabled Ventuary-DAO to take its logical next step.The new solution makes the fundraising process more transparent and automated. Every developer can promote his idea and attract his first users. The best ones will receive Waves Labs support. For everyone else, it’s an excellent opportunity to make a profit by using your analytical skills.You can apply to Waves Labs with your startup idea without joining Ventuary-DAO if you want. However, Ventuary-DAO provides community backing, with established rules which mean that Waves Labs support is more likely.How does it work?To join DAO you have to be invited by a member. You’ll find them all on the community page with their contact information. Ask one of them to share an invitation link with you, or submit an application to join. You must also have the Waves Keeper browser extension installed.Proposal`If you want to promote your idea, all you have to do is to fill in the special proposal form, called ‘Canvas’. There will be a few basic questions about your future dApp. Proposal registration costs 3 WAVES.ModerationAfter registration, participants have two hours to support or reject the idea. Everyone gets an invitation to vote ‘Yes’ or ‘No’, betting 1 WAVES each. When the voting period is up, the loser’s tokens are shifted to the winners’ side. The betting mechanism was implemented to involve more users in voting and make the process more decentralised.CrowdfundingIf the proposal gain two thirds of the votes, members can start to donate from 3 to 1,000 WAVES to the project. To increase the chance to attracting attention from Waves Labs, grant supporters can offer their views in a short message, answering a question such as ‘Why should this proposal be supported by Waves Labs?’.Grants and rewardsAfter crowdfunding ends, Waves Labs has five days to decide whether to make a grant. There are two possible outcomes:Waves Labs approves the idea. The proposal owner receives a grant and those who supported the project are refunded their investments with a reward of up to 50% of their contribution amount. The reward amount depends on a factor set by the owner.The proposal is rejected. In this case, funds collected are returned to investors. Those who bet against the idea are refunded, with a bonus of up to 50%.A detailed description of how Ventuary DAO works can be found here. You can also watch tutorial videos on their YouTube channel.The next step for complete decentralisationThe emergence of Ventuary-DAO is critical for the Waves ecosystem. Each member of our community is an independent actor who will determine the future direction of dApps development. This is a fundamental part of our vision that was articulated at the creation of Waves Platform.Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditWaves Labs to Use DAO as Sandbox for Grant Programs was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 08. 06

Your questions about Waves ...

– There was news about the sale of the Vostok project to GHP Group. Can you elaborate on the details of the deal?The Vostok brand and a portfolio of projects were sold to GHP Group. GHP Group will use the brand to develop its own blockchain projects in the Russian Federation. VST token and VST network remain under the control of the Waves team. The funds raised while the first investment round also remain under the Waves team’s control.– How are the investors’ funds ($120 mil) going to be used?The funds will be used for development of the Waves ecosystem, including the Enterprise department. Part of the funds will also be used to enable the eventual merge of Waves Enterprise and Waves Platform network under one native token.– What do you mean by Waves Platform and Waves Enterprise networks merging?This is what will happen in our next major release, which we are calling ‘Waves 2.0’. This is currently in the research stage. Further details about this release will be published in Q4 2019.– Are VST tokens related to the (sold) Vostok project?VST tokens remain in the Waves ecosystem and are under the control of the Waves team. The sale did not result in the transfer of tokens to GHP Group.– How (and when) will the remaining VST airdrop tokens be distributed?We reserved 4 percent of total VST supply for the airdrop, and the final tranche will be distributed to verified accounts (via Waves Keeper or transaction). Verification was introduced to ensure the distribution of tokens only among active accounts and community members. Complete verification to confirm account ownership, and you will be included in the token distribution list. Tokens will be sent within a week of verification.– Since Vostok was sold, will there be further sales of VST tokens or not? If so, when?We do not plan to conduct any further public sale, but additional liquidity can be added to the market based on demand if necessary. This will only happen if the price reaches $1.60.– How VST tokens were sold during the early investment rounds? Are these the same tokens that were distributed during the airdrop?During the closed investment round, 20% (200,000,000) of VST tokens were sold for $0.60 per token. Another 4% (40,000,000) of VST tokens were reserved for the airdrop. All VST tokens were issued, and there was no division of these tokens into separate types or purposes — they are the same token.Vostok -> Waves Enterprise– What is Waves Enterprise chain?Waves Enterprise chain is a permissioned (administered) public blockchain network, to which corporate sidechains anchor in order to guarantee their consistency. It will be connected to other public chains through a sidechain protocol, and will eventually use the same native token, WAVES.– Why have you made this step?Waves has always been a global project, and we intend to expand worldwide. Waves Enterprise, which originated in the Vostok project, has become a global division of Waves. We sold Vostok to focus on international expansion and avoid becoming restricted to certain markets. Besides, the concept of unification of private and public networks in one ecosystem is what drives the future Waves 2.0 platform. Re-branding our private network as an explicitly Waves-based project is a part of the Waves 2.0 roadmap.– Do the Vostok investors from whom you raised $120 million have a share in Waves Enterprise?VST tokens are utility tokens. They do not give investors the right to a share in Waves, Vostok, or Waves Enterprise. Waves Enterprise network will run using VST token, and will have a separate development roadmap until then. When Waves 2.0 has been fully launched, Waves Enterprise network will be connected to the Waves Platform public chains and they will all use the same native token. The token merge will be made based on their respective market capitalisations around 2021.Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditYour questions about Waves Enterprise answered was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 08. 02

Community Node Programme re...

We are going to lease 10,000+ WAVES to new full nodes, giving them a boost for their participation in ‘Game of Nodes’.In addition to the ‘Game of Nodes’ competition, we are relaunching the Community Node Program. The idea is to give new full node owners the opportunity to join the competition and win a prize. In the autumn we are expecting mining revenues to increase significantly, since the RIDE language has been launched on mainnet and more dApps are coming to the ecosystem. Get ready now and start your own node!Requirements for participationEach participant must have a node with a generating balance of at least 1,000 WAVES — either in the node’s own account, or leased to it. If you already have this, simply apply using this form: https://airtable.com/shrxxcnAKc8zwasxRConsideration of applications may take up to two weeks from the date of submission. The status of applications can be checked here: https://airtable.com/shrOSRUoPJ2KSyNxWWhat will I get?If you are successful you will receive at least 10,000 WAVES in leases, or even more to add to your stake (generating balance) for six months — increasing your chances of mining blocks and receiving revenues. Last but not least, you’ll get the opportunity to take part in ‘Game of Nodes’ — and you’ll be off to a flying start.The decision of whether to lease WAVES to your node will be taken on different criteria — for example, how active the applicant is in developing their node and attracting leases from the community. Similarly it will work in your favour if you are building a project using Waves technologies. The following will also improve your chances:– A Twitter account with an established community– A Telegram channel with an established community– A site or project built on WavesWe reserve the right to reject participation in the programme without explanation.I don’t have a node — how do I get one?You decide how and where to set up your node — here are links to instructions. If you have any questions, please ask them in the developer chat. Remember that setting up the node is only half the battle. You will also need to maintain it:– Update your node’s software with the most recent Waves node releases. You can find them here — subscribe to the repository so you never miss an update. You can find the update manual here.– Monitor the performance of your node, monitor the state of the node (use the monitoring tools provided by your hosting solution, if you rent an instance) and respond in a timely way to any problems, if they occur. This may require additional system administration skills.Don’t be evilNodes that receive leases from Waves team every month will be checked for the following:Whether the node is generating blocks. If the node has not generated any blocks in the last month, we will withdraw our lease.If the owners of the nodes behave dishonestly, deceive their leasers, do not fulfill their obligations or if there are legitimate complaints from the community, we will take measures and withdraw our lease.Just do it!We are accepting applications from everyone! If you have been a member of this program in the past, you can still apply. If you have any questions, please ask them in the developer chat.Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditCommunity Node Programme relaunched was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 07. 29

Game of Nodes: A new progra...

On 24 July, we are launching a special program that will last eight weeks and will stimulate the development of the network of nodes that underpins the Waves ecosystem.Waves platform is developing and the number of transactions on the network is growing. With the release of the updated RIDE smart contracts programming language, we have already seen a sharp increase in network activity.One of the most important components of Waves Platform’s decentralised network is its full nodes. It is critical for us to maintain and develop the network, creating profitable conditions for Waves node operators. We are therefore launching a new program that will stimulate the development of the network and accelerate growth of revenues for node holders. However, since we are planning significant investments in nodes’ stakes, access to the support programme will only be given for the winners of a fair and transparent challenge!Eight-week challengeAnyone can take part in the challenge, but the main requirement for participation is, of course, to run a working full node. The core task of this challenge is to increase your stake by any available means, but mainly by attracting new WAVES leases. The node that achieves the most significant increase will receive a 1,000,000 WAVES addition to its leasing stake from the Waves team for one year, with the intention that they keep all additional profits generated by this stake. There will be three overall prizes:– 1st place: 1,000,000 WAVES– 2nd place: 600,000 WAVES– 3rd place: 400,000 WAVESFrom Wednesday 24 July, we will begin making weekly snapshots of Waves node stakes, based on the ‘Average Gen. Balance’ from the community-driven website http://dev.pywaves.org. We will monitor stake growth, compare nodes’ performance and score each node. The snapshot period will last for eight weeks, ending on 18 September.How does it work?We will apply an algorithm to score participating nodes and decide the winner. Here’s what it will look like in practice:Weekly Rating Calculation FormulaTerminology:Node — Instance with installed Waves Node and activated MinerGenerating Balance — Average Generating Balance during the Snapshot PeriodSnapshot Period — 1 weekOldGenBalance — Day 1 of the Snapshot PeriodNewGenBalance — Day 7 of the Snapshot PeriodPerformanceRatio — MinedBlocks/EstimatedBlocks per Snapshot PeriodExample: Let’s assume that three nodes have increased their average generating balance by 75,000 within a Snapshot PeriodAs you can see, all three nodes received the same number of extra WAVES in leases. However, Node 3, with the lowest balance, scored 26.91 points because the difference between the balances at the start and end of the period was proportionately far greater. Meanwhile Node 1, with the highest balance, received 2.44 points, because in this situation 75k represents less significant growth. And Node 2, with a balance in between 1 and 3, received 9.04 points. While its growth was significant, the node’s performance (blocks mined) was lower than the other two.The challenge is designed in such a way that big players cannot displace smaller ones — this is all about decentralisation, ladies and gentlemen! The winners will be eligible to receive a respectable amount of passive income.Where to get extra WAVES?That’s part of the challenge! Node owners must look after their communities and organise their own leasing. They can discuss their ideas with their communities on social media, ask people to come up with mutually beneficial schemes, sign smart contracts, run competitions — or anything else they can think of! Everyone can decide their own strategy, and find out what proves most effective!Profitability of WAVES leasing and miningMany of you may ask: What if I don’t have a Waves node? Go and create one! It’s going to be profitable and we are awaiting a further significant increase in revenues for miners and leasers in the autumn.Deploy a node, and if you need advice or help, go to the developers chat — the folks there will tell you how to do things. And get some WAVES to add to your stake!Holders can join the gameWithdraw WAVES from exchanges to a cold wallet, and then lease to a small node on profitable conditions. In the autumn, we expect revenues from leasing WAVES to increase to up to 5% annually. It will be profitable to hold your WAVES in your wallet for the long term.System requirements for nodes:Minimum: 2 cores, 4 GB RAM, 80 GB SSD (at least 50 GB)Optimal: 4 cores, 8 GB RAM, 80 GB SSD (at least 50 GB)Cool: 8 cores, 16 GB RAM, 80 GB SSD (at least 50 GB)Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditGame of Nodes: A new programme of support and development for Waves network was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 07. 23

Waves: the Global Ride

Waves is charting a course around the global market to promote its technologies and products.Waves technology should be marketed globallyWaves has always been a worldwide project, and our international community is the result and proof of this. Now, we are moving away from local projects and rethinking our development strategy. Waves technology should become the property of the whole world, and we will make every effort to deliver our solutions to this goal.To begin this process, we knew we had to stop working on local projects. This is why Vostok was sold, also freeing up resources for the start of our big campaign to conquer the global market.Technology for the EnterpriseWaves is a global ecosystem, suitable for application in many different areas. This is not only a blockchain platform, but a new Web3 approach to implementing a wide range of processes in business, public institutions and even government agencies. Blockchain is a foundation that allows you to build a wide variety of technologies on top of it, enabling these to work more smoothly thanks to the principle of decentralisation and robust consensus algorithms.We are developing an enterprise solution within the ecosystem — Waves Enterprise. We have the technological basis and groundwork for the launch of complex products for corporations that have high demands in terms of speed, versatility, reliability and security.Waves Enterprise technology will become a universal solution, enabling its users to run any algorithms — from smart contracts to neural networks — in any popular programming language with the help of an automated system for deployment and management of applications: Docker.VST will lay the foundation of the Web3.0 economy for Waves Enterprise, enabling control of (and payment for) app development, as well as other ecosystem solutions. VST is the network’s internal currency and a technical token for the public network, needed for connecting your node to the network, paying operational (mining) fees, and anchoring corporate sub-chains to the main chain.In the near future, the Waves Enterprise project will not seek investment, to avoid shifting the focus away from the development of Waves Enterprise technologies and their dissemination to the global market. It is important for us first to bring the project to a successful launch, and then it will be possible to talk about further funding rounds. When this ultimately occurs, further VST will be sold at a price of no less than $1.60.We’re accelerating! Buckle up!Up to the end of 2019, our developers will be focusing on the release of several features that will radically change the Waves landscape, including:Passive (leasing) income and mining profitability. In autumn 2019 we will apply an update that will raise the profitability of mining and leasing. This will increase leasing revenues to 5–10% annually. This is a new approach that allows people to receive income, similar to interest within the banking sector. We believe that the future of the global crypto economy lies in this direction. Your existing balance will allow you to earn significant amounts of money — it’s amazing! We are striving to make the economy inside the Waves ecosystem as sustainable as possible and to enable people to receive meaningful passive income. We know that you’ll have lots of questions about this, and we’ll be explaining more about it in due course.Provably secure consensus. At the end of 2019, we will make a release that will be another major milestone in the development of the ecosystem — an improved consensus algorithm. New cryptographic algorithms will be implemented into the system, giving us provably secure consensus.Sidechains. At the end of this year, as we’ve previously shown on our roadmap, we will launch sidechains. These will increase network performance and bring scalability to a new level. Sidechains will be part of the preparation for the transition to a new stage of development of the system — Waves 2.0.Waves 2.0. In Q4 2019, the white paper for Waves 2.0 will be published. This will be a system that will incorporate best practices in decentralised system development and enable a radical increase in productivity. The first prototype of the Waves 2.0 mainnet is planned for launch in Q2 2020. Then we will begin a smooth transition of the Waves infrastructure to a new mainnet, due to the functionality of the sidechains that will be able to interact with each other. Waves 2.0 is a new type of platform that combines public and private solutions. Eventually, the development of our private Waves Enterprise solution and public Waves Platform blockchain will be merged.Company growthAs part of this global development, we will expand the company. For the development and promotion of Waves Enterprise, we will open an integrator company in Europe. Also as part of the development of the ecosystem, we plan to open an office of developers in Europe. We are currently working on various options and directions for opening new offices, and will keep our community updated on these developments — so stay tuned!Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditWaves: the Global Ride was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 07. 19

Smart contracts for the pri...

Vostok’s approach addresses many of the shortcomings of public-blockchain smart contracts when applied to a private network.Difference between smart contracts on public and private networksThe blockchain is evolving from payment systems, to enabling the platforms that allow underpin decentralised applications. Charles Hoskinson provides a good explanation: when Ethereum was developing their platform they realised that the transfer of assets has a story behind it, which can consist of different terms and conditions to be fulfilled for transfer to be finished. Consequently, with further technological development blockchain users realised that more than transferring is possible and started to build various useful and even funny decentralised applications. As far as the public blockchain goes the main use cases are:Games — Crypto Kitties, Ride on waves, etcAsset exchangeSecure Voting systemsCrowdfunding (ICOs)With the growth of adoption and popularity of public blockchain platforms, enterprise companies understood that blockchain technology could actually be very efficient for some of their business processes. That progress and focus on business needs had an influence on smart contract development as well. Now, given our experience with the corporate customers, we can provide popular use cases in which smart contracts can shine in the private blockchain arena:Corporate document flowSupply chain business processesInsuranceSecure voting systemsClearing of mutual settlements with suppliersLeasing and rental equipmentCreation of derivative financial instruments, backed by tangible or intangible assets (e.g. debt tokenisation)Auctions of any type or complexityPredictive analytics over blockchain dataAs you might imagine, there is a difference between smart contracts for public and private blockchains. On a private blockchain the key differences are:Data operated by smart contracts is much more sensitive compared to public networks.A common case is that smart contracts should be able to operate with documents and data stored outside of the blockchain, which is not possible for public blockchain platforms. In a public network, there are oracles which are either trusted or can store very limited data objects directly on the blockchain. In both cases, there are serious limitations for the private case.Sometimes transactions which invoke smart contracts should be encrypted, if we are dealing with private smart contracts in such a way that only authorized parties can decrypt and execute the contract.What do business customers expect from smart contract functionality in business applications?The answer to this question is relatively simple — they want to translate their complex business processes into blockchain logic with a minimum amount of pain. In order to satisfy the needs of our customers, we conducted research and formulated questions to understand what has to be done with our smart contracts:Q: What language should contracts use and how safe it should be?As you might know, Waves has the RIDE language, which is really convenient and well-integrated to the blockchain — but it is useful only when the logic of the application is confined to the chain. For applications which need to operate with a lot of different documents, RIDE is inconvenient and we should use something more friendly for developers.2. Q: Can the system easily express complex business rules?For most languages the answer is, unfortunately, no. There are many reasons for this. Corporate developers do not know blockchain specifics and languages for smart contract development, and the relevant languages aren’t able to work with off-chain data.3. Q: Can we upgrade contracts in the future without rewriting all blockchain structures?Again, no for most approaches on the market (except Hyperledger Fabric). The main reason is that contracts are integrated into the blockchain too closely, which is inherited from public networks where another integration poses a direct threat to system security.4. Q: How easy is it to integrate smart contracts into existing customer infrastructure and work with other business applications?Unfortunately, most of the business applications or their APIs have to be redesigned and it is hard to use them from smart contracts, which introduces additional costs for businesses when adopting blockchain within their project.In the next section, we will describe how we approached all these problems and what our complete solution is.Vostok Smart ContractsSo, what smart contracts are available for Vostok Platform?RIDEAs you already know, Vostok support RIDE and relatively soon will adopt RIDE 4 dAps. But RIDE, like almost any other smart contract language that was developed for the public platform initially, lacks the ability to work with off-chain data. Given that RIDE is very fast and well-integrated to the blockchain we propose to use RIDE for implementation of simple logic that doesn’t involve data processing from external sources. So, for example, public auctions, public voting, public insurance could all be implemented using the RIDE language. Otherwise, we recommend using our new feature — Docker smart contracts.Docker smart contractsVostok Docker smart contracts are actually programs wrapped into the Docker container. The Docker container is placed in the Docker registry (one or many). Each container has an address on the blockchain and an image hash associated with it (obviously to ensure that we are using the valid container we publish the image hash beforehand with the DockerCreate transaction: more on this can be found in our documentation). To execute a contract, a blockchain transaction is made with the required call parameters, and the contract will also write the results on the blockchain. Since we are using Docker containers, any programming languages and frameworks can be used, unlike Hyperledger Fabric, where developers are limited by the SDK. Note that Docker isolates the application from the Vostok node and we do not have access to the node at the Code level, but we do have a network connection so are able to execute HTTP or RPC requests when we need to. This means we are able to request not only our node but almost any other service we know. To summarise our previous statements, the key advantages of Vostok’s Docker smart contracts are:Flexibility of programming languages. Developers can choose any programming language, with any frameworks and packages they are comfortable with.As a result, we can run Neural networks and other machine learning models inside contracts to bring the power of AI to blockchain applications.We can connect our smart contracts to external data sources, accessing real-time data and working with applications outside of the blockchain.Complexity of smart contracts is bounded only by the computing power of the virtual machine on which the contract is deployed. Execution time is bounded only by block time, or can be lower if user wants.Contract parameters can be encrypted to prevent users from knowing what data you are processing.What happens when you call a contract?As explained in the previous section we have some code in the docker container. But what actually happens, when someone puts a call transaction in the Node transaction pull? The procedure is as follows:If the container does not exist, it will be created with the necessary environment variables.It loads exec, a firewall if an Internet connection for this contract is prohibited, and the domain Node is initialised with environmental variables.Then run.sh script is executed, which will install dependencies if the container did not existThe contract can obtain information about the node and transaction through the OS environment variables.The contract will be killed on timeout if takes too long to compute (the exact timeouts can be configured by the user).The result of the contract’s execution should be printed to STDOUT and formatted as List[DataEntry]. For more details on the format and output you can check the documentation.If the contract executed successfully, the miner will create ExecutedContractTransaction and sign it. The transaction contains the call transaction which invoked the contract, and the result. Then, like any other transaction, it is included in the block and applied to the state.All participants receiving the block can validate that the transaction signature was produced by the participant with role ‘mine’, and also apply the tx to the state.If you are interested in seeing examples and the necessary steps of deploymen,t you can check this guide in our official documentation.Brief comparison with the best on the marketThe advantages do we gain from these technological solutions are important, so here we will discuss how our Docker smart contracts compare with other popular smart contracts.1. Ethereum has a strong community and has dominated for a long period of time as the number one dApp development platform in the public blockchain arena. It has also been modified for private blockchain use (for example Quorum and Masterchain). But Solidity and EVM languages in general, for the sake of execution on a public network, have serious limitations which Vostok Docker contracts do not have.a) Gas. EVM languages are Turing complete, but in order to be stable in case of an attack, which would paralyse the system by executing infinite calculations, there is a limit to how many operations EVM can perform per contract execution and how complex operations can be. As a result, if we have a complex contract we may get an Out of Gas Error. This is impractical for a private network, because we require that business processes will be completed.b) Off-chain data. You can put some data in the Ethereum smart contracts, but the storage is quite limited and expensive. You can not, for example, write a contract for example, that requests current prices from an exchange, and uses them for other operations. In other words, you can not create a small web server using Solidity, but you can do it with Vostok — and even with your favourite programming language and framework.2. Hyperledger Fabric is currently the best-known platform for private blockchain solutions, and also brings to the table smart contracts in Docker containers. However, they are limited by the SDK and only available for Go, JS, etc. Developers have to handle a lot of low-level operations like dispatch and argument discovery, making even the simplest ‘hello world’ programme on Go 90 lines of code. This might be impractical for many developers.What’s next?We are constantly working on improving our technology and have already started work on some of the key features we will release in the coming months. To start with, we are working on security enhancements for the current protocol. In the future, smart contracts may require a multi-signature by miners involved in contract execution. We are also enhancing our mining process to support parallel mining of Docker smart contracts and ordinary transactions, along with mining multiple Docker contracts in parallel.ReferencesVostok SiteVostok DocumentationVostok Docker exampleWaves RIDE docsSmart contracts for the private blockchain network was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 07. 12

Node 1.0 Released on Mainnet

We are releasing a major update for the Waves blockchain! Waves Node 1.0 will bring some powerful and long-awaited new functionality and features to the Waves ecosystem.With Node 1.0, Waves receives a major upgrade — the culmination of many months of work. We are particularly proud of the mainnet release of RIDE for dApps, enabling dApps implementations on Waves.RIDE for dAppsRIDE was written specifically for execution in a blockchain environment and designed for building applications that will form the next generation of the internet. RIDE includes the following features and properties:Lazy executionPredictable computation costsZero failed transactions on the networkModern typed functional approachSimple and conciseFormal-verification-friendlyFor more information about writing dApps on Waves, see https://docs.wavesplatform.com/en/smart-contracts/writing-dapps.html.Mathematical functionsWe have also added new mathematical functions to the RIDE programming language: logarithms and exponentiation. This allows developers to perform calculations on the Waves blockchain. There are cases when you need to calculate models by formulas — for example in economic or physical models — and this is now possible with RIDE. One of the use cases for this functionality is implementing an algorithmic stable coin.gRPC interfaceWe are implementing an alternative to the REST API, which has a number of advantages. It is a mechanism for standard description of interfaces and data formats. Users of our API (who are mostly developers) can use this tool as a communication protocol between an application and the blockchain. The new interface allows reduced development time. After the release we will start standardising the presentation format of data: transactions, blocks, addresses, aliases and all possible entities on the Waves blockchain.The standardisation process will be coordinated with the community: we will listen to feedback from developers and adjust the standards to their needs. As a result of this process, we will add these formats to the protocol of interaction of elements of Waves’ infrastructure. Our main goal is to come to the use of Protocol Buffers and make interaction with the Waves infrastructure simple, fast and convenient, as well as easy to support in all existing libraries for all programming languages.Asset order feesThis release also sees a new feature for Waves ecosystem users: DEX fees in assets other than WAVES. The Waves community has long requested this feature and now we are introducing it. The DEX will soon support the ability to pay commissions for any orders with any tokens in ETH and BTC, along with WAVES. When choosing an asset other than WAVES, the fee is calculated based on the current exchange rate on Waves DEX.NFTAfter this update it will be possible to issue Non-fungible tokens (NFTs) on the Waves blockchain. The issue transaction is the same as before, but for issuing an NFT, it must be: non-reissuable; decimals should be 0; and quantity must be 1. If these conditions are met, the issuance price drops from 1 WAVES to 0.001 WAVES. These tokens can also be issued with a script in the RIDE language, making them non-fungible smart assets. With this innovation, the platform becomes much more attractive for tokenisation of digital assets, with applications in gaming and for other digital collectibles.Voting for the releaseAs usual, the update initialises a process of voting for miners on the network. A successful conclusion to the voting process is required to activate the new protocol and switch on smart contracts for network users. After reaching the required 80% of votes, the protocol will be activated a week later. When activation occurs, all these functions will become available for users and developers.Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditNode 1.0 Released on Mainnet was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 06. 25

A blockchain solution for t...

On 6 June 2019 Vostok’s mainnet was launched, taking blockchain solutions for major corporations and government agencies to a new level.A year ago, when Waves celebrated its second birthday, founder and CEO Alexander Ivanov announced plans for Vostok, a new project within the ecosystem.On the one hand, Vostok comes as a logical extension of Alexander’s broader work of making blockchain accessible to every individual or organisation interested in its profitable use. On the other hand, this is a specific response to growing demand from large enterprises and state institutions that would like to adopt DLT-based solutions.Since the project’s announcement, substantial work has been carried out to create the private blockchain platform Vostok, as well as an integrator capable of building complex innovative products with its distributed ledger technology.Interest in the project is consistently rising, evidenced by a range of partner agreements with corporations and institutions including Rostec, Sberbank, Transmash Holding and Vneshekonombank.Even before the official launch of the public network, the integrator implemented several major projects, including with DOM.RF and the Nizhny Novgorod government. Currently, a number of other projects are in progress, the results of which will be announced shortly.Work on the Vostok platform was carried out by a team of experienced blockchain developers and business experts who helped formulate requirements for the solution.Today, we are thrilled to announce another landmark in Vostok’s development: the launch of its public network. This will allow large companies interested in blockchain-based solutions but who don’t want to build their own infrastructure, to use an enterprise-ready blockchain network.Vostok’s enterprise-ready network allows all holders of Vostok’s token, VST, to conduct transactions, write data to the blockchain and launch smart contracts.An important element of our infrastructure is an enterprise-ready solution, Vostok Client. This enables issuance, transfer and leasing of tokens, publishing and requesting contracts and working with contract drafts, as well as managing other users’ permissions. For most operations, you will need to register using Vostok Client and obtain permission from the network administrator. You can request permission at https://support.vostok.io/servicedesk.Alongside the launch of Vostok’s network, we have introduced a gateway for transferring VST tokens between the Waves and Vostok networks, and now all interested parties can experiment with transactions.Options for using Vostok’s blockchain infrastructureVostok partners have several options for using our solutions:— Integration into Vostok’s public infrastructure. Using Vostok’s mainnet, with permission to join the network issued by the administrator. — Building an independent Vostok blockchain infrastructure. Creating an independent private network with assistance from the Vostok integrator. Operating a private network does not require VST tokens, but infrastructure costs apply.— Creating a hybrid blockchain ecosystem. This option offers improved reliability of a private network via connection to Vostok’s mainnet.You can start building solutions on the Vostok platform right now. Please direct your requests to sales@vostok.io.Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditA blockchain solution for the corporate and public sectors was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 06. 06

A new step for Waves DEX de...

We are prioritising Waves DEX for the continuing development of Waves Client. It will now be a standalone, trading-focused product.Waves is continually striving to improve its platform, making it as effective and user-friendly as possible. Following research and feedback, we have decided to prioritise trading as the main direction for the future development of the Client app..The changes will affect the desktop Client in the first place. Up to this point, we have developed the Client as a universal application with broad functionality. Over a period of almost three years we have collected feedback, analysed user behaviour and, ultimately, come to the conclusion that we need to change the product in the interests of users.What is the user experience?Analysis of user activity shows that the vast majority spend their time on the platform using Waves DEX. Wallet functionality and Leasing will remain an integral part of the application, but the priority for product development from now on will be on trading toolsWhat will we exclude?We must consider the additional functionality within the current Waves Client that we are planning to separate out. At this point in time, the Client allows users to install scripts on their account — but we know that these functions are overwhelmingly used by developers alone.We will therefore not support the ‘set script’ function on the decentralised exchange itself. Instead, this will go into Waves IDE — where there are already all the tools for creating and debugging such scripts. However, we will be leaving functionality for setting a script on an asset (and converting it into a Smart Asset). This is necessary for those who want to issue tokens on the Waves Platform and apply business logic to them. Any token issued on Waves will still automatically be listed on DEX.Social media updatesFor more effective development of products, we have decided to open a dedicated communication channel for our audience of traders. Discussion about various aspects of trading will occur on our new Twitter account.body[data-twttr-rendered="true"] {background-color: transparent;}.twitter-tweet {margin: auto !important;}This is the official Twitter account for Waves DEX - subscribe and join our community of exchange users! Find the latest news, updates, promotions and more here! #WavesDEX — @Waves_DEXfunction notifyResize(height) {height = height ? height : document.documentElement.offsetHeight; var resized = false; if (window.donkey && donkey.resize) {donkey.resize(height); resized = true;}if (parent && parent._resizeIframe) {var obj = {iframe: window.frameElement, height: height}; parent._resizeIframe(obj); resized = true;}if (window.location && window.location.hash === "#amp=1" && window.parent && window.parent.postMessage) {window.parent.postMessage({sentinel: "amp", type: "embed-size", height: height}, "*");}if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.resize) {window.webkit.messageHandlers.resize.postMessage(height); resized = true;}return resized;}twttr.events.bind('rendered', function (event) {notifyResize();}); twttr.events.bind('resize', function (event) {notifyResize();});if (parent && parent._resizeIframe) {var maxWidth = parseInt(window.frameElement.getAttribute("width")); if ( 500 < maxWidth) {window.frameElement.setAttribute("width", "500");}}Along with new social channels, Waves DEX will also have a new website. The exchange will be available on the domain dex.wavesplatform.com, but when users navigate to this domain, they will be redirected to client.wavesplatform.com. This is to ensure that all saved browser passwords continue to work.In addition, we have changed the exchange interface:Redesigned navigationMoved menu to the top of the screenAdded 25%, 50%, 75% and 100% buttons in order settingWhat will happen to the mobile app?The mobile application will be developed according to the same principles, improving exchange functionality for users. If we see that people are using some functions more than others, we will adapt the direction of product development to their needs.DEX development plansAs previously stated, we will adhere to our roadmap and do not intend to deviate from it — all the promised functionality will be implemented according to our existing plans:Multiple Accounts. Users will have the ability to switch easily between multiple accounts within the DEX.2FA. Two-factor authentication will give Waves DEX users even greater security.ERC-20 Gateway. Addition of an ERC20 token gateway to the Waves ecosystem, meaning that popular Ethereum tokens can be traded on the platform.Market orders. Traders will be able to sell tokens quickly at market price.DEX optimisation. Improvements in DEX speed and memory requirements will be implemented.We are also going to release a more convenient API for bot trading and optimise the UX/UI, implementing best design practices from the trading space.Feedback is welcomeWe have created a thread on the Waves forum to gather your feedback. If you have any suggestions for adding new features, please leave them here: https://forum.wavesplatform.com/t/waves-dex-feature-requests/14926Join Waves CommunityRead Waves News channelFollow Waves TwitterWatch on Waves YoutubeSubscribe to Waves SubredditA new step for Waves DEX development was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 05. 30

Waves Launches Course for W...

On 17 May, Waves will launch a dApps programming course in a bid to prepare developers for the technologies that will become the backbone of the next-generation Web.In the run-up to the mainnet release of RIDE for dApps, the Waves Platform’s ambassador and tech evangelist Aleksei Pupyshev and his Ventuary team, in collaboration with Waves’ DevRel department, are launching an educational course for developers entitled ‘Mastering Web 3.0 with Waves’.Why launch the course now?In recent months, the dApps segment has seen substantial growth, and new, scalable solutions are arriving on a regular basis — testifying to the potential for mass adoption of blockchain.Waves itself is in the process of launching new products for developers to use in building their decentralised applications.In Summer 2019 alone, we expect several major releases, including the mainnet release of RIDE for dApps, as well as Mobile Keeper, Gateways and other products.So, we want more developers to master dApps and other related technologies, and become early players in the Web 3.0 game.Who can benefit from the course?The course is aimed at developers and IT professionals interested in acquiring hands-on knowledge of Web 3.0 technologies, such as blockchain, dApps, digital economy, tokenisation and decentralisation.We primarily invite frontend developers, webmasters, full-stack web developers (Node.js, PHP, Python), Indie/Games and iOS/Android developers to join us. Freelancers and those working for developer studios are also welcome to apply.What the course is aboutThe course is made up of five mandatory weekly classes and one extra class. Each class will include several video lectures, a quiz and an online code-writing challenge.Soft deadlines of one week will be set for each quiz and challenge. All answers and scores will be written onto the blockchain to ensure full transparency.Each class will be preceded with a Q&A session featuring course organisers and Waves team members.To make the course as close to the real-world environment as possible, throughout its duration, participants will work on developing one large project, Coupon Bazaar: an online service for coupons and coupon auctions.Why take the course?In addition to learning the basics of coding for Web 3.0 products, each graduate of the course will receive a dApp and Waves-verified certificate displaying their score.Successful graduates could become Waves’ tech mentors and collect a regular reward in WRT and WAVES tokens for further activities, such as teaching RIDE to other developers.Additionally, successful graduates will enjoy preferential treatment when applying for Waves Incubator and Waves Labs RIDE special challenges.Timeline and curriculumMay 8 — Registration startsMay 17 — First classMay 30 — Registration endsJune 21 — Final classCurriculum:Topic 1: Web 3.0, decentralisation, blockchain and cryptocurrencies.Topic 2: Tools for improving security. Introduction to Smart Accounts.Topic 3: Tokenisation and introduction to Smart Assets.Topic 4: Advanced functionality of Smart Accounts and Smart Assets. Escrow services. Introduction to RIDE for dApps.Topic 5: Decentralised apps and practising using RIDE for dApps.Extra class: Advanced functionality on the Waves Blockchain.Conditions and requirementsThe number of places is limited. To apply for the course, please fill out this form.Knowledge of/familiarity with JavaScript and Node.js will be the main selection criterion.However, if you are not familiar with JavaScript or Node.js, please indicate this on the application form, and extra materials will be sent to you before the start of the course.Participation in the course is free of charge.If you have any questions, please contact us here.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves Launches Course for Web 3.0 Devs was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 05. 08

Easy KYC for Waves with Blo...

The partnership will provide straightforward and transparent tools for businesses to add KYC support to their Waves services and applications.Waves has partnered with KYC provider and identity management system Blockpass to bring KYC Connect to the Waves Platform.As developers continue to build out new services and applications, KYC functionality is vital to ensure safe, compliant adoption. However, it can be difficult and expensive for smaller, independent developers to secure the functionality they need. Blockpass solves this problem with low-cost, off-the-peg tools that anyone can plug into their software — leveraging the blockchain and tokenisation to do so.Waves founder and CEO Sasha Ivanov comments, ‘Waves team keeps developing our platform while focusing on the features and instruments requested by the community and required for the smooth and effective development of decentralised applications. As KYC, KYD and KYO are essential parts of decentralised solutions for the regulated industries that are required for any application aiming for mass adoption, we are now partnering with Blockpass and integrating its KYC Connect, one of the leading solutions to provide shared regulatory compliance services.’Putting the user in control with tokenised identityWhile most KYC services involve users giving away their personal data — with potential consequences for privacy should that information be hacked or compromised — Blockpass takes a different approach in ensuring the user stays in control of their personal information. Using the Blockpass application, which is available for both Android and iOS, users can create, store and manage a data-secure digital identity. This can be used for an entire ecosystem of services or token purchases.As soon as technical integration of Blockpass KYC Connect with Waves is complete, a special PASS token will be airdropped to all Waves users. Users can then verify their identity by downloading the Blockpass mobile application, submitting the required documentation and receiving the relevant certificates. After verification, users can submit this information to the Waves PASS whitelisting service by scanning the QR code on the Waves website.‘This is a world-first partnership for Blockpass and implementing our KYC-forward token on a platform like Waves means that we can offer a much broader service within the realm of securitised asset trading,’ explains Blockpass CEO Adam Vaziri. ‘Waves is a pioneering platform for Web 3.0, and identity will without a doubt be the pillar that supports the growth of decentralisation.’Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditEasy KYC for Waves with Blockpass was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 05. 07

Waves Launches Decentralise...

At the end of last year we announced a new protocol for decentralised asset verification. The idea is that, alongside other data providers such as BetterTokens, the community itself will provide information about which tokens are safe and reliable, and which are not.The initiative is similar in some ways to a decentralised version of BetterTokens, though the idea in this instance is for the community to provide a collective rating score, rather than undertaking a full legal review. We want to receive feedback from a wide cross-section of the community about the quality of different tokens and projects.Collective evaluationThe new tools provide a means to gauge and aggregate the opinions of the entire Waves community. Anyone with a balance of at least 1 WCT (and 0.001 WAVES as a transaction fee) can participate. You will need Waves Keeper installed for your browser, and at present, tokens can only be rated from desktop browsers (for mobile versions of browsers, the service is available to read only).To rate a token, select the one you want from the ratings table on the voting website or find it using the search bar, then click on 1 to 5 stars, depending on how you view the quality of the asset. Next, click the Rate button and sign the transaction using Waves Keeper. WCT are not transferred during the voting process — only an existing balance is required to vote. Each vote is weighted according to the number of WCT in your balance. Each account can only have one active vote for each asset at a time, though if you want to update your vote with a different score, you can. Votes will be applied after 24 hours so there may be a delay in updating the token’s score.Additional and upcoming featuresIn the future, this ratings system may be integrated with DEX, though for now it is just a standalone website. It’s also worth saying that although the scoring provides an indication of what the community thinks, users have to make their own decisions.Additionally, we have implemented the Token Rating oracle that records each token rating to the Waves blockchain using DataTransactions! This means that third-party projects on Waves will be able to make use of a transparent and public token rating system in their dApps and other blockchain-enabled projects. In the future, we may also consider using ratings data to manage suspicious tokens in the Waves client.If you have WCT, please use them to give your feedback on your favourite (and least favourite) Waves tokens!Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves Launches Decentralised Token Rating System was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 04. 29

Waves celebrates 3rd birthd...

On 19 April, we marked our company’s third anniversary with a meetup titled ‘Waves 3.0’, using the occasion to discuss the future of decentralised technologies.https://medium.com/media/5470d4cdb7deddc4ecac8ace049db355/hrefThe event which was organised by Waves’ partners Digital October started with a series of presentations from key members of the Waves team.Tatiana Tsiguleva, head of product, talked about the evolution of Waves’ software, including immediate plans for separating out Waves client, a trading tool, from the wallet — which will be mostly intended for regular users who don’t trade digital assets.The meetup’s participants then received a first-hand introduction to Waves’ native programming language, RIDE, from one of its creators, Ilya Smagin.Sasha Kolupayev talked about the success of the Tradisys team at Odyssey, the world’s largest blockchain & AI hackathon, held on April 11–15 in Groningen, Holland.Tradisys’ solution, based on Waves’ technology, was considered the best in the Rethink Retirement track, and the team will now work on turning the prototype into a fully-fledged solution with ABG, one of the world’s largest pension fund operators, managing a portfolio of $500 billion.Taking a short break from the serious business to deal with some more fun stuff, the lucky winner of the Nivaway contest was chosen. The contest for winning a new LADA Niva, considered a true ‘people’s car’ in Russia (which we only half-jokingly dubbed ‘our Tesla’), was entirely run on the blockchain, which ensured full honesty and transparency.Sergei Tolmachev, head of Waves’ R&D department, explained the algorithm for choosing the winner and ran it in real time, using the Pick Winners plugin to select the future owner of the LADA Niva.Meanwhile, another contest was run during the meetup. Participants had to implement tasks suggested by a Telegram bot, such as taking selfies with other meetup participants, and the first 10 people who completed all the tasks correctly collected their prizes.The first prize was a ticket to the Web 3.0 Summit in Berlin this August. Those who took second, third and fourth places collected 150, 100 and 50 WAVES, respectively, while prizes for places 5 through 10 were Waves-branded Ledger Nano S cold storage wallets.Switching back to business, Artem Tolkachev, general director of Tokenomica — a fully compliant, Malta-registered crypto exchange — provided updates on the BetterTokens association that is developing crypto standards and, of course, on Tokenomica itself.Tokenomica, as a major platform for the issuance and trading of security tokens in a regulated environment, offers a technical and legal framework for digital assets. The main news was the launch of Tokenomica’s DEX, as a major step towards decentralisation of trading in the future.Meanwhile, among Tokenomica’s further plans are the launch of an extended version, tentatively scheduled for TestNet in May and on MainNet in July.The meetup’s main highlight was a talk by Sasha Ivanov, Waves’ founder and general director, in which he shared his insights on the future of Web 3.0.‘We are no longer working on blockchain, we are working on Web 3.0,’ he said. ‘In Russia, we are the sole company that focuses on Web 3.0 products.’Explaining his vision of the Web 3.0 future, Sasha said: ‘The arrival of a larger number of social connections for people and availability of information have not led to transparency and unity of the world. On the contrary, we are witnessing considerable division.‘But there is a cure for every sickness,’ he went on to say. ‘And so blockchain has arrived, a technology opening doors for a number of other technologies, which should counter the centralisation trend and facilitate building of transparent, more efficient systems. We’re developing applications that bridge the ideology of blockchain, Web 3.0 and decentralisation with reality. We are creating systems that will work and make money right now.’The presentations were followed by a Q&A session with Sasha Ivanov, networking and fun activities.In addition to the contests mentioned above, the attendees were able to take part in a contest on their Web 3.0 knowledge. The winners were awarded with WAVES tokens which, in turn, could be exchanged for Waves-branded souvenirs at the makeshift gift shop.Overall, this year’s Waves birthday celebration attracted many more guests than last year’s event, with over 700 people showing up: a testament to the significant interest in both Waves and Web 3.0.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves celebrates 3rd birthday, heralding Web 3.0 was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 04. 26

Announcing the WRT buyback!

Tokens can be sent as a sign of appreciation to Waves Ambassadors — who are the only ones able to sell them.In our recent airdrop, we distributed a total of 872,200 Waves Reward Tokens (WRT) to 8,722 addresses — all those containing at least 10 Waves Community Tokens.The purpose of WRT is to reward our Ambassadors as valued members of our community, as well as showcasing Waves’ smart token functionality. Now, we are going to buy back 40,000 WRT for 40,000 WAVES. On 19 April you will find a buy wall for these tokens on DEX.Smart tokensThese tokens are not designed to be traded by the community, but are a special asset intended to be used solely as a reward currency for our Ambassadors. Anyone can send WRT to an Ambassador, but a white-listing function attached to the token prevents anyone but Ambassadors from selling them. (If you have any further suggestions for features we can implement for WRT, please let us know at community@wavesplatform.com).Ambassadors are a vital part of the Waves ecosystem and community, and we want to incentivise them to do their work in any way we can. Waves team will also be donating WRT to Ambassadors who show their dedication and initiative.Could you be our next Ambassador?We are currently looking for Ambassadors in Berlin, New York, San Francisco and Singapore. If you think you’d be a good fit, send your applications here.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditAnnouncing the WRT buyback! was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 04. 18

Vostok and the Future of En...

Our new project implements ideas from open blockchain ecosystems into the traditionally closed world of enterprise technology.Blockchain and distributed ledger technology, as so-called foundational technologies, have not instantly disrupted our economies and business practices. They are taking their time to find their place and meaning in the current world. After all, we’re talking about a whole new paradigm, about decentralized technology that works without any central control, and it takes a while for the world to digest the ideas and implications of this.Blockchain technology emerged as a way to create fully decentralized ledgers (databases), with access granted to any external participants wishing to join the network. The immense success of Bitcoin kick-started seemingly counterintuitive attempts to apply blockchains in the enterprise environment, an environment that is usually separated from the outside world and doesn’t provide free access to anybody who wishes to peek into it. Many companies worldwide are still figuring out ways to apply blockchain ideas to enterprise; the idea of “permissioned” or “administered” blockchains, which emerged around five years ago, is slowly finding its way into the real world and production-stage applications. After years of prototyping we finally see live applications; the enterprise blockchain market is estimated to reach a value of $20 billion by 2025.Therefore the ideas behind blockchain technology are so powerful that they can be taken over to different realms and be adjusted to them. What is the future of enterprise blockchains? What ideas does our Vostok project, the enterprise DLT platform to be launched this summer, aim to bring into the world of enterprise applications?First off we must define what permissioned blockchains essentially are. In the (hopefully not very distant) future enterprise apps will be able to run on open blockchains; unfortunately right now they do not provide the level of security guarantees and confidentiality necessary for large-scale enterprise-grade solutions. So permissioned chains seem to be a natural choice if one tries to combine enterprise and blockchain — if there’s a party that controls the network access and manages the participants’ roles in the network, things become much simpler. The administrator provides security guarantees and the blockchain data structure can be used to synchronize the data among the network participants.Effectively, blockchain tech becomes a data synchronization mechanism, which scales better than the ones that existed before blockchain (such as Paxos, for example). The reason for this is the fact that the blockchain network scales proportionally to the number of participants in it, since data sync is made through common transactions logs (blocks) that are exchanged between network nodes. In older approaches nodes had to essentially vote on accepted data, and that entails direct one-on-one communication between the nodes, which scales proportionally to the number of nodes squared. Linear scaling works much better if you have many participants; Paxos runs into scalability issues with just several dozens of nodes.So, is this all that blockchain technology brings to closed enterprise networks? It seems like it’s not much?From a technical perspective it might be the most important thing; but let’s not forget that there’s a huge ideological shift behind distributed ledger tech. Sometimes it seems that the ideas brought by Bitcoin are more important that any concrete realizations of them, including Bitcoin itself. We can think of essentially different architectures now; about synergetic unions of different technologies running on a blockchain foundation. We can bring a new level of transparency to enterprise applications; they can include parties that do not particularly trust each other and are bound to follow the rules imposed on them by the distributed architecture of the system. You can’t simply cook the books and corrupt sensitive data that is spread through the network in cryptographically-chained chunks and shared by network participants.Could these systems have come to light before blockchain? Yes, certainly. It’s just that we understood their true purpose and place only now. Blockchain has given us inspiration and a push to disrupt decades-old architectures and take enterprise IT platforms to a new level.But blockchain still doesn’t make much sense in an enterprise environment per se; one can’t just “attach” it to an existing application in a way that makes any meaningful sense. Enterprise apps should be built with distributed architecture in mind only if they really profit from it. Different technologies, such as IoT, Big Data and AI, which are essential now, should be combined on a blockchain layer. In this case, the distributed nature of the application serves as a kind of glue which brings different technologies together, giving them a new, holistic, meaning.A good example of this is smart contract functionality. The “smart contracts” moniker seems almost inappropriate for open blockchains, where we actually just mean programs running in a way that is enforced by the distributed nature of the environment they run in. They are not real “contracts”. In a business enterprise environment this name starts making sense, since these programs can actually be real contracts, executing automatically based on clearly-defined and immutable logic. The customer receives a consignment, confirms a delivery, and the funds, locked in a trade finance transaction in a bank, are automatically unlocked; that’s the kind of business processes we’re talking about.Open blockchain ideas make a lot of sense; they are strong and powerful even beyond their natural habitat. Vostok platform’s goal is to take all the viable and proven ideas which emerged in open blockchain ecosystems (such as tokenization, Proof-of-Stake consensus, smart contracts), add some features that are available only for permissioned systems (flexible blockchain computation, permissions control) and get the best of both worlds. Vostok offers open systems ideology in a closed systems setting.Vostok has the feel and mechanics of open blockchain, being at the same time a collection of permissioned enterprise blockchains, secured by a permissioned public chain. Corporate chains are anchored to the public chain, by posting cryptographic proofs of their consistency.This architecture allows us to introduce VST, a native network token. It brings tokenization ideas into the ecosystem’s economic model.For example, the Vostok integrator company, which implements the Vostok platform for corporate clients, uses VST token as a payment mechanism that provides a way to build new interaction mechanics in the Vostok ecosystem — for example, the integrator company can provide support for a certain time period to customers if they hold VST tokens. This way a whole new economy is born, and the ideas from a decentralized apps ecosystem can be adopted into a seemingly totally different sector.By launching Vostok platform we launch a whole ecosystem. It combines openness and control, the public VST token and corporate side-chains, taking corporate IT applications one (or several) steps further towards a future in which they will be able to run on secure and fast public platforms. That’s why Vostok is meant to be compatible with Waves, our open blockchain platform. Eventually they are going to merge into one global network, serving the needs of all types of businesses and applications, from large to small, and from governments down to local communities.So what is Vostok?Vostok is an opportunity to participate in the rise of enterprise blockchainsVostok is the direct applications of Web 3.0 ideas to enterprise IT platforms.Vostok is more than a blockchain, it is an ecosystem with its own economy, technology, and business practices.Vostok platform will be launched in Summer, 2019.Originally published at https://blog.wavesplatform.com on April 17, 2019.


19. 04. 17

Waves Platform Releases Dat...

Data oracles are indispensable to blockchain infrastructure. In the first article in a series devoted to blockchain data oracles, we discuss how Waves’ protocol will help make an oracle accessible to the entire community.A smart contract written on the blockchain is unable to access data outside its own network. This problem is resolved by using data oracles, which are basically agents that find real-world information and feed it to the blockchain for use by smart contracts and dApps.In other words, oracles are tools that facilitate communication between the blockchain and the real world. Data they feed to the blockchain could be as diverse as currency exchange rates, weather reports, results of elections or sporting events, commodity prices or even flight and train timetables.Execution of smart contracts could be triggered by meeting pre-set conditions which, in turn, require data of the right kind to be available.Major blockchain platforms have recently shown interest in creating tools for data oracles, such as Ethereum, which runs Ethereum Oracle.Waves offers its own data oracle tool, based on the already available DataTransactions.On a purely technical level, creating a data oracle for the blockchain is very straightforward.All you need to do is take an outside source of information and send an initializing DataTransaction, announcing the oracle and explaining what type of data it will be providing. Subsequently, the data will be accessible for smart contracts.However, there is one problem. How can you know if a data oracle for a specific type of information is available on the blockchain, how often it is updated and what source of information it uses?Waves’ solution is a protocol for data oracles, which is basically a standardized set of fields for entering information to the blockchain.Regardless of whether data is entered manually or automatically, the protocol includes fields for main values, which will help other community members to find the oracle and learn what type of data it feeds to the blockchain, what the third-party source is and how frequently the data is updated.A developer can use an existing protocol, which is available on Waves’ GitBook, or expand it, if necessary.The process is simple. To make things easier for developers, Waves offers a data oracle developing tool, which will be integrated in a single interface with a public directory of data oracles, broken down by category.If a developer wants their oracle to be accessible to other members of the Waves community, helping the entire ecosystem and also generating revenues, they can fill in various DataTransaction fields, describing the oracle.That information will be converted, and an initializing DataTransaction will be formed.Later, the developer will be able to update the oracle’s data — for instance, change its status or add a new field in the description. We suggest that developers update the oracle’s version for each format change and provide a brief description of changes, making the oracle’s operation easier for other developers who already use its data.Once the initializing DataTransaction has been sent, the oracle will be accessible in the directory in the category stated by the developer.Use Waves’ oracle development tool to create a data oracle, and our protocol will help make your oracle visible on the blockchain!Further down the road, there are plans to create a database of open-source protocols to help developers create standards for blockchain data oracles in various fields, with the ultimate goal of improving interoperability and compatibility of IT and blockchain systems.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves Platform Releases Data Oracle Tool was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 04. 04

Vostok token airdrop to be ...

Dear Waves community,as you probably know, the official snapshot period for the upcoming Vostok token airdrop is now over. Every account that held Waves and/or WCT during the snapshot period will receive a distribution of VST tokens according to the statistics available at https://vostok.wavesplatform.com.Over the past two months we have been working on the legal aspects of the VST token sale, preparing for the second round of private investment and the public offering. The second round is now taking place, while the public phase has been scheduled for Summer 2019. 10% of Vostok tokens will be sold on the open market. Waves DEX will be the main platform for token distribution.Improving distributionWe would like to use the months before network launch to make the future distribution of VST token as wide as possible. Proof of stake systems should have as many stakeholders and as broad a distribution as possible, to ensure the stability and robustness of the network. We will therefore distribute an additional 1% of VST tokens to Waves accounts that hold WAVES and WCT from 1 April to 31 May. The criteria will be exactly the same as for the previous phase. However, in order to be eligible for these additional tokens, users will need to verify they control that account by signing in using Waves Keeper on a special page, that will be available shortly. Verification can take place at any point in this phase, between 1 April and 31. Verification is not required for your original allocation of VST from the first snapshot phase (1 February to 1 April). Addresses that are not verified using this page will simply receive the amount of VST they were due for the first phase of the airdrop.The airdrop itself will take place directly after the new snapshot period is over, with one airdrop distributing tokens for both phases. Soon after this the VST token will be available for trading.We are also happy to announce the finalisation of our Vostok network launch roadmap. The Vostok project is an integral part of the Waves ecosystem, and the updated roadmap both maximises the benefits for the Waves community and prepares for a smooth Vostok network launch. Thank you for your trust and ongoing support!Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditVostok token airdrop to be extended was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 04. 03

Waves Gaming Grant Recipien...

Tradisys, an established contributor to the Waves community in the gaming field, will be issued a 100,000 WAVES grant for future projects.Recognising the huge potential of the $100 billion gaming sector as a major use case for blockchain, Waves launched its gaming project in October 2018. A total of one million WAVES will be disbursed to motivate developers to build their games on the Waves blockchain.Waves strongly believes that the gaming sector will be an enthusiastic adopter of blockchain and will drive its widespread use.Now, we are thrilled to announce the recipient of the first grant under our gaming project. Tradisys is a long-term and devoted contributor to the Waves community, having already developed several ground-breaking games on the Waves platform and with many more in the pipeline.Road to blockchain masteryFormed in November 2017, Tradisys has been contributing to Waves since Summer 2018.In September 2018, Tradisys unveiled TicTacToe, the first ever game on the Waves blockchain, at a community meetup in St Petersburg. The game was written in RIDE, Waves’ language for smart contracts.A month later, Tradisys’ Centaur Oracle was used to select the winner of a Ledger Nano S during a Waves Blockchain Community meetup in Tallinn. Since then, the Centaur Oracle has been actively used by the Waves community for holding various contests and raffles.In December, the X-mas Tree game was launched on the Waves Platform. Users were able to decorate a Christmas tree and get the chance to win a prize of 3 WAVES, while all of the proceeds from the game were donated to charity.The game was a huge success with the Waves community, and was soon followed by Fhloston Paradise — a smart contract-powered game inspired by the movie The Fifth Element.The initial version of Fhloston Paradise tested players’ patience, since the winner was the player who paid the very last stake during a 60-block period, before any other player could pay their stake and reset the counter to zero.Eventually the winner, Dmitry Pichulin, collected 4,700 WAVES in stakes paid by other players. You can check out the game’s source code on GitLab.Just over a week ago, Tradisys released a sequel, Fhloston Paradise 2, which is broken into rounds, making the chances of winning much higher.Meanwhile, Tradisys’ other effort on the Waves blockchain is Dice Roller, which took design, UX, technology and transparency in the blockchain space to a totally new level.We anticipate a fruitful and exсiting collaboration with Tradisys. We will soon publish an interview with Ioann Voronin, Tradisys’s crew captain, so stay tuned.And, if you are a developer of blockchain games, we would like to hear from you. Fill out a form to get the chance to join the programme and work with us in the lucrative blockchain gaming segment!Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves Gaming Grant Recipient Announced was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 03. 28

Waves Smart Asset Applicati...

In the two previous articles we discussed using smart accounts and smart assets for running auctions and creating customer loyalty programs , as well as facilitating transparency for financial instruments.Today, we will look at some specific use cases for smart assets, including asset freezing and restricting transactions for certain addresses.Smart assets allow Waves users to apply scripts to tokens in much the same way as they can apply scripts to smart accounts. Whenever a transaction for a smart asset is created, it is validated by the script before being confirmed by the blockchain.Smart assets differ from smart accounts in the following ways:In a smart asset’s code, proofs cannot be checked (as discussed in the first article)In a smart account’s code, an ExchangeTransaction can only be checked if your account is a matcher account. Otherwise, only an order can be checked. In a smart asset’s code, you cannot check an order, but you can check an ExchangeTransaction and, if necessary, extract an order from it.Unlike a smart account, a smart asset doesn’t have a state, but we still have access to account states from the script.Smart assets help to substantially simplify the process of writing contracts, making implementation of many use cases more concise and elegant.Asset FreezingTo freeze assets until a certain block height, targetHeight, is reached, simply define this value in the following smart asset’s script:let targetHeight = 1500000height >= targetHeightheight is a language function that returns the current heightUsing a certain matcherTo define a certain matcher, you can assign the matcher address as the sender value in the following smart asset’s script:match tx {case t : ExchangeTransaction =>t.sender == addressFromString("3PJaDyprvekvPXPuAtxrapacuDJopgJRaU3")case _ => true}Recipient whitelistTo allow transfer of tokens only to specific accounts — to create a “whitelist” — you can use a smart asset with the following script, which checks for the presence of an address on the list:match tx {case t : TransferTransaction =>let trustedRecipient1 = addressFromString("3P6ms9EotRX8JwSrebeTXYVnzpsGCrKWLv4")let trustedRecipient2 = addressFromString("3PLZcCJyYQnfWfzhKXRA4rteCQC9J1ewf5K")let trustedRecipient3 = addressFromString("3PHrS6VNPRtUD8MHkfkmELavL8JnGtSq5sx")t.recipient == trustedRecipient1 || t.recipient == trustedRecipient2 || t.recipient == trustedRecipient3case _ => false}For purposes of security and provable completion of language, the list doesn’t complete implementation of the iterator. Therefore, it is defined as a set of specific elements.Recipient blacklistSimilarly, to prohibit transfer of tokens to specific accounts, you can create a blacklist. Exactly the same smart asset script will be used, but it will check an address for absence from the blacklist:match tx {case t : TransferTransaction =>let bannedRecipient1 = addressFromString("3P6ms9EotRX8JwSrebeTXYVnzpsGCrKWLv4")let bannedRecipient2 = addressFromString("3PLZcCJyYQnfWfzhKXRA4rteCQC9J1ewf5K")let bannedRecipient3 = addressFromString("3PHrS6VNPRtUD8MHkfkmELavL8JnGtSq5sx")t.recipient != bannedRecipient1 && t.recipient != bannedRecipient2 && t.recipient != bannedRecipient3case _ => false}Transferring by issuer permissionUsing a smart asset, you can also add the option of transferring the smart asset only with its issuer’s permission (commitment/debt label). The issuer expresses their consent by placing the transaction’s ID in their account’s state:match tx {case t : TransferTransaction =>let issuer = extract(addressFromString("3P6ms9EotRX8JwSrebeTXYVnzpsGCrKWLv4"))#checking that the issuer's state contains the current transaction's IDisDefined(getInteger(issuer, toBase58String(t.id)))case _ => false}Asset tradable only against a certain currencyA smart asset can allow trading solely against specific coins. For instance, to ensure the smart asset trades only with bitcoin, the following code can be used:let BTCId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'match tx {case t : ExchangeTransaction =>t.sellOrder.assetPair.priceAsset == BTCId || t.sellOrder.assetPair.amountAsset == BTCIdcase _ => true}Trading with prices from an oracleIn a smart asset’s script, you can set permission for trading only at a price fixed in the trusted oracle’s state:let oracle = Address(base58'3PLNmokt22NrSiNvCLvwMUP84LCMJqbXwAD')let assetId = toBase58String(base58'oWgJN6YGZFtZrV8BWQ1PGktZikgg7jzGmtm16Ktyvjd')match tx {#prohibiting the transfer of the assetcase t: TransferTransaction | MassTransferTransaction => falsecase e: ExchangeTransaction =>#checking that trading is at the price fixed in the oracle's state for this assetlet correctPrice = e.price == extract(getInteger(oracle, assetId))#checking that the trading is in exchange for WAVESlet correctPriceAsset = !isDefined(e.sellOrder.assetPair.priceAsset)correctPrice && correctPriceAssetcase _ => true}Here, we face a special situation while checking the ID of the asset against which our smart asset trades. If the asset’s ID is not defined, it is WAVES by default. In the script, we check that trading is to be against WAVES.Fixed price raiseYou can set a fixed price for a smart asset, which can be raised in steps by a specific proportion. This is an example of a script for a smart asset traded with a fixed price that is raised by 5% every 1,000 blocks:let startPrice = 10let startHeight = 1000let interval = 1000#by what percentage the price is increased in one steplet raise = 5match tx {case t: TransferTransaction | MassTransferTransaction => falsecase e: ExchangeTransaction =>e.price == startPrice + ((height - startHeight) / interval) * (100 + raise) / 100&& !isDefined(e.sellOrder.assetPair.priceAsset)case _ => true}Interval tradingA script can also be applied to allow trading of a smart asset that is limited to a predetermined time frame. This is an example of such a script:let startHeight = 10000let interval = 44000let limit = 1500match tx {case t: TransferTransaction | MassTransferTransaction | ExchangeTransaction =>(height - startHeight) % interval < limitcase _ => true}In the script, we check that no more than “limit” of intervals has elapsed since the start of trading (startHeight). The interval length equals the number of blocks defined in the interval field.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves Smart Asset Applications: Whitelists, Blacklists and Interval Trading was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 03. 21

Tradisys Re-Launches Fhlost...

In the new version of the blockchain game, which is inspired by the movie ‘Fifth Element,’ the chances of winning will be much higher.Do you remember the blockchain game Fhloston Paradise, which Tradisys launched on the Waves blockchain a few weeks ago? The community really enjoyed the game, which was designed to test players’ patience.The winner of the original game was Dmitry Pichulin, known by the nickname @deemru. His recipe for success was to use Patrollo, an open-source bot he developed specifically for the game. Patrollo paid just eight stakes of 1 WAVES, eventually winning 4,700 WAVES for Dmitry.We’ll soon publish an interview with the winner, but you can already check out the bot, which is available on GitHub.Now, Tradisys has come up with a new version of the game, which promises to be even more exciting.While the original game functioned on the principle of indefinite extension, the new version will be broken into rounds.At the beginning of each round, players will have 15 blocks to extend the round.Each round can last a maximum of 1,240 blocks, which roughly corresponds to 21 hours. The current block height will be displayed, so players will be able to see how many blocks are left before the end of the round.Once a round is over, the winner — the player who paid the last stake — will have 200 blocks (roughly three hours) to collect the prize. During those 200 blocks, no new stakes can be paid.If a round ends earlier than 1,240 blocks, the game is frozen until 1,440 blocks have elapsed since the beginning of the round. The remaining time can be used by the winner to collect their prize.If the winner fails to collect their prize, that amount will be transferred to the subsequent round.As a result, there will be a new winner every day, as opposed to just one main winner as there was in the first version of the game. The chances of winning will therefore be considerably higher, making the game much more exciting!You can also try out Dmitry’s bot. Let it play on your behalf — maybe it will win for you!Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditTradisys Re-Launches Fhloston Paradise was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 03. 19

RIDE for dApps hits Waves T...

The upgrade to Waves’ native blockchain language is a key step along the way to full dApp implementation and Web 3.0 development.Earlier in January we released our roadmap. We have now reached the first milestone on this, and the release of Node update 0.17 brings RIDE for dApps to TestNet!As we’ve discussed at length before, blockchain really isn’t designed for carrying out complicated computations. Blockchain architecture simply isn’t suited to this. After seeing the vulnerabilities and edge cases that have arisen on Ethereum, Waves has always maintained that Turing-completeness should not be essential for on-chain blockchain computations. The RIDE language itself is deliberately non-Turing complete for this reason. However, Turing complete computations can still be achieved by spreading operations over consecutive blocks, if such functionality is required. RIDE therefore offers a flexible but safe solution for on-blockchain computation.RIDE for dApps is being introduced to grant an account a way of assigning a programmable function to itself, with callable functions that are able to:Receive paymentsChange the account’s stateSend WAVES and tokens from the accountTo initiate the call, we have added a new command: InvokeScriptTransaction. This needs to be put on the blockchain to call a function, and the sender pays fees to the miner for the invocation to be executed. The sender can optionally attach payment in WAVES or tokens, and upon invocation the contract state can be changed and the contract can make multiple payments.The existing mechanics for authorisation scripts will be maintained under the @Verifier function of the account. This can be thought of as an ‘admin’ function for the contract’s owner or owners. By default, the contract, contract data and contract tokens are all controlled by the private key for the account. Multisig control is possible. If @Verifier is always false, then the contract is sealed — immutable.We will now give an overview of some of the use cases that this new functionality makes possible. As we know, these functions can generate transfers (transfer of funds from the contract address) and change a dApp’s state (via DataTransactions from the contract account). Moreover, RIDE for dApps makes implementation of certain use cases far easier and more convenient.Dividing funds into two equal partsSuppose we need to implement a mechanism to split the funds in an account equally between two specific addresses.Consider an implementation using a smart account: the script allows the account to send only MassTransfer transactions that meet the specified conditions:There are two recipients: Alice and BobFee = 0.006 WAVESEach of them is sent exactly ((balance-fee) / 2) WAVESThe account can only send a transaction that meets the conditions described above. Other transactions will not be accepted on the blockchain.# Predefined addresses of recipientslet Alice = base58'3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8let Bob = base58'3N78bNBYhT6pt6nugc6ay1uW1nLEfnRWkJd'match(tx) {# only MassTransferTransactions are allowedcase tx : MassTransferTransaction =># check if the transaction has exactly two predefined recipientstx.transferCount == 2&& tx.transfers[0].recipient == Alice&& tx.transfers[1].recipient == Bob# check if WAVES are distributed evenly&& tx.assetId == unit&& tx.transfers[0].amount == (wavesBalance(tx.sender) - fee) / 2&& tx.transfers[0].amount == tx.transfers[1].amount# check if the fee is equal to 0.006 WAVES&& tx.fee == 600000# the other types of transactions are prohibitedcase _ => false}In RIDE 4 dApps we do this differently: you can divide the funds between two given addresses by calling the ‘split’ function described in the script. This function divides all the funds of the account-contract in half, sending them to two addresses — Alice and Bob. You can call this function by sending InvokeScriptTransaction. In this case, the fee is paid by the one who sends the transaction, so you do not need to check the fee in the script code.# predefined addresses of recipientslet Alice = base58'3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8'let Bob = base58'3N78bNBYhT6pt6nugc6ay1uW1nLEfnRWkJd'@Callable(i)func split() = {# calculate the amount of WAVES that will be transferred to Alice and Boblet transferAmount = wavesBalance(this) / 2# the result of a contract invocation contains two transfers (to Alice and to Bob)TransferSet(List(ContractTransfer(Alice, transferAmount, unit),ContractTransfer(Bob, transferAmount, unit)))}Register of addresses that have paid for a serviceImagine that we want to create a service that allows you to register payment for services by users (for example, a monthly subscription). Subscribers each pay 10 WAVES, with the time of the last payment being entered into the register.Consider the implementation using a smart account. The account script only allows DataTransactions that meet the following conditions:0.005 WAVES feeTwo entries<transfer_id> : “used”<payment_sender_address> : <current_height>3. In the proofs array, the first element is the transfer transaction id (payment for services), which includes:The recipient address for the contractAmount >= 10 WAVES + 0.005 WAVES (to pay for DataTx fee)Id was not previously used as a key (to prevent double-spending)# fixed payment and fee valueslet dataTxFee = 500000let paymentAmount = 1000000000match (tx) {# only DataTransactions are allowedcase t: DataTransaction =># extract the payment transaction's id from the DataTransactionlet paymentTxId = toBase58String(t.proofs[0])# extract the provided payment transaction from the blockchainlet paymentTx = transactionById(fromBase58String(paymentTxId))match (paymentTx) {# the provided payment transaction should be a TransferTransactioncase paymentTx : TransferTransaction =># check if the payment transaction was not used before (to prevent double-spending)&& !isDefined(getString(this, paymentTxId))# check if the payment recipient is this account&& paymentTx.recipient == this# check if the transfer amount exceeds the required minimum&& paymentTx.amount >= paymentAmount + dataTxFee# check if the transferred asset is WAVES&& paymentTx.assetId == unit# check if the data satisfies the specified format&& size(t.data) == 2&& getString(t.data, paymentTxId) == "used"&& getInteger(t.data, toBase58String(tx.sender.bytes)) == height# check if the fee is correct&& t.fee == dataTxFeecase _ => false}# the other types of transactions are prohibitedcase _ => false}The main disadvantage of this approach is the complex mechanics: you need to send two transactions, one of which refers to the other, as well as send transactions on behalf of other account (specify the sender address of the contract).Using RIDE for dApps everything is much easier. The payment can be attached to InvokeScriptTransaction. We need only check in the script that the payment was attached. If the address calling the script pays at least 10 WAVES, it is entered into the registry.# fixed payment amountlet paymentAmount = 1000000000@Callable(i)func pay() = {# check if the attached payment is at least 10 WAVESlet payment = extract(i.payment)if (payment.asset != unit || payment.amount < paymentAmount)then throw("You have to provide a payment of at least 10 WAVES")# the result of a contract invocation contains one dataEntry(<caller_address>, <current_height>)else WriteSet(List(DataEntry(toBase58String(i.caller.bytes), height)))}VotingIn this example, a non-anonymous vote is implemented based on known voting lists and candidates. An account ballot is prepared in advance (sent to the list via DataTransaction), including:The list of voters (for each voter create an entry { <voter_address_voted>, false })The list of candidates (for each candidate create an entry { <candidate_address>, 0 }).To implement using a smart account, the account script allows only DataTransactions:Submitted by voters who have not already voted. The voter’s public key goes in proofs[1] and signs this DataTransactions (the signature itself goes in the proofs[0]).The DataTx contains exactly two entries:<candidate> : <current_value> + 1<voter_address_voted> : truematch(tx) {# only DataTransactions are allowedcase tx : DataTransaction =># extract the chosen candidate from the transactionlet candidate = tx.data[0].key# check if the transaction was signed by the voterlet voterPublicKey = tx.proofs[1]let voterKey = toBase58String(addressFromPublicKey(voterPublicKey)) + "_voted"sigVerify(tx.bodyBytes, tx.proofs[0], voterPublicKey)# check if the voter has not voted yet&& extract(getBoolean(this, voterKey)) == false# check if the data satisfies the specified format&& size(tx.data) == 2&& extract(getInteger(tx.data, candidate)) == extract(getInteger(this, candidate)) + 1&& extract(getBoolean(tx.data, voterKey)) == truecase _ => false}In RIDE for dApps, in the contract script we describe the vote function, which can be called to vote for a certain candidate.@Callable(i)func vote(candidate : String) = {let voterKey = toBase58String(i.caller.bytes) + "_voted"# check if the caller is registered as a voterif (!isDefined(getBoolean(this, voterKey))) then throw("You are not registered as a voter")# check if the voter has not voted yetelse if (extract(getBoolean(this, voterKey)) == true) then throw("You have already voted")# check if the candidate is in the voting listelse match (getInteger(this, candidate)) {case r : Integer =>WriteSet(List(DataEntry(candidate, r + 1),DataEntry(voterKey, true)))case _ => throw ("Candidate is not in the voting list")}}WalletIn this example, a dApp wallet is implemented: you can send a WAVES payment, and it will save it in the wallet (deposit function), and you can take deposited WAVES back out of the wallet (withdraw function).func getBalance(address: Address) : Int = {match getInteger(this, toBase58String(address.bytes)) {case a: Int => acase _ => 0}}@Callable(i)func deposit() = {let caller = toBase58String(i.caller.bytes)let currentBalance = getBalance(caller)let payment = match(i.payment) {case p : AttachedPayment => pcase _ => throw("You have to provide a payment to deposit")}if (payment.asset != unit) then throw("This wallet cannot hold assets other than WAVES")else {let newBalance = currentBalance + payment.amountWriteSet(List(DataEntry(caller, newBalance)))}}@Callable(i)func withdraw(amount: Int) = {let caller = toBase58String(i.caller.bytes)let currentBalance = getBalance(caller)if (amount < 0) then throw("Can't withdraw negative amount")else if (amount > currentBalance) then throw("Insufficient balance")else {let newBalance = currentBalance - amountContractResult(WriteSet(List(DataEntry(currentKey, newBalance))),TransferSet(List(ContractTransfer(i.caller, amount, unit))))}}ExchangerThis example shows implementation for a dApp-exchanger, which buys/sells WAVES and USD at a fixed price. It describes the functions ‘buyWAVESforUSD’ and ‘sellWAVESforUSD’. Users need to attach payment, and the dApp sends a transfer in response.let WAVES = unit # amount assetlet USD = base58'Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck' # price assetlet buyPrice = 301let sellPrice = 299let scale = 100000000@Callable(i)func buyWAVESforUSD() = {let payment = extract(i.payment)if (payment.asset != USD) then throw("To buy WAVES for USD you have to provide USD")else {let amount = payment.amount * scale / buyPriceTransferSet(List(ContractTransfer(i.caller, amount, USD)))}}@Callable(i)func sellWAVESforUSD() = {let payment = extract(i.payment)if (payment.asset != WAVES) then throw("To sell WAVES for USD you have to provide WAVES")else {let amount = payment.amount / (scale / sellPrice)TransferSet(List(ContractTransfer(i.caller, amount, WAVES)))}}This is by no means a complete list of possible use cases. Check out RIDE for dApps on TestNet and let us know your thoughts and your own use cases!Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditRIDE for dApps hits Waves TestNet! was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 03. 18

Application of Waves Smart ...

In the previous article, we considered several use cases for smart accounts in business, including auctions and customer loyalty programs.Today, we will discuss how smart accounts and smart assets could improve the transparency and reliability of financial instruments such as options, futures and bills of exchange.OptionsAn option is a contract that gives the buyer the right but not the obligation to buy an asset at a specified price, prior to or on a certain date.An option can be implemented in the following way. We use a smart asset for an option and a smart account for a participant who takes the role of an exchange and issues options (“exchange” participant). The “exchange” participant pledges to sell a certain amount of an asset at sellPrice between block heights expirationStart and expirationEnd.In the smart asset’s code, we just need to check that it trades only between the set heights, while responsibility for observing the rules will be delegated to the “exchange” participant’s code.Smart asset code:let expirationStart = 100000let expirationEnd = 101440match tx {case some : ExchangeTransaction | TransferTransaction =>height > expirationStart && height <= expirationEndcase _ => false}We’ll assume that the following actions will take place: the “exchange” participant sells options for buying a certain asset, and the other participants can send or trade these options. To execute their right to buy the asset, a potential buyer has to transfer a corresponding number of options to the buyer’s account — i.e. to the account of the “exchange” participant.Subsequently, the buyer adds the information on the transfer to the account’s state, and only after that can an ExchangeTransaction with specified conditions for buying/selling be accepted by the blockchain.In the smart account code, we need to check that any ExchangeTransaction going through it for the final deal corresponds to the set conditions and the buyer purchases only the same number of units they sent to the account of the “exchange” participant.The buyer needs to send a correct DataTransaction with the transfer, so that the “exchange” participant can avoid double spending. In this DataTransaction, the buyer adds to the key, which corresponds to their address, a value that is equal to the number of options transferred to the account of the “exchange” participant, i.e. equal to the number of units of the asset they can buy.Smart account code:#the account owner pledges to sell a certain number of the asset's units#at sellPrice between block heights expirationStart and expirationEndlet expirationStart = 100000let expirationEnd = 101440let sellPrice = 10000let amountAsset = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'let priceAsset = base58'9jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'#option asset IDlet optionsAsset = base58'7jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'#extracting the sender's address from the transactionlet this = tx.sendermatch tx {case dataTx : DataTransaction =>#extracting the number of units from the DataTransaction by the key (user ID)let units = extract(getInteger(dataTx.data, dataTx.data[0].key))#extracting the transaction from the prooflet e = transactionById(o.proofs[7])match e {case exchangeTx : ExchangeTransaction =>let correctSeller = exchangeTx.sellOrder.sender == Boblet correctBuyer = exchangeTx.buyOrder.sender == Alicelet correctAssetPair = (exchangeTx.sellOrder.assetPair.amountAsset == amountAsset && exchangeTx.sellOrder.amount == sellAmount && exchangeTx.sellOrder.price == sellPrice)|| (exchangeTx.buyOrder.assetPair.amountAsset == amountAsset && exchangeTx.buyOrder.amount == sellAmount && exchangeTx.buyOrder.price == sellPrice)#making sure that the order’s ID is correctly stated in the proof transactionlet correctProof = extract(getBinary(extract(tx.sender), toBase58String(exchangeTx.sellOrder.id))) == o.id|| extract(getBinary(extract(tx.sender), toBase58String(exchangeTx.buyOrder.id))) == o.idcorrectAssetPair && correctProof && correctSeller && correctBuyercase _ => false} &&(height >= expiration) &&#verifying the signature(sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) &&(tx.sender == Bob)case _ => false}Futures contractsUnlike options, futures contracts (futures) represent the buyer’s obligation to buy an asset at a predetermined price at a specified time in the future, not merely the opportunity to do so.Overall, the implementation of futures is similar to that of options. Here, a smart asset acts as the futures.We also need to check that both buyer and seller sign a transaction order. A futures contract is an obligation that has to be executed in any case. So, if the buyer or seller repudiate their obligations, any participant in the network can send a transaction and thereby execute the contract.The smart asset’s script controls all TransferTransactions and ExchangeTransactions of the futures assets, approving them only if the buyer has created an order for a future purchase of the future assets from the “exchange” participant.This order has to be valid and meet the conditions under which the futures contract was issued. To check the order, all of its fields could be recorded to the buyer’s account’s state along with the byte code of the signed order, after which validation by a third party could be carried out.Currently, RIDE doesn’t contain a native feature for parsing transaction bytes, but has all the necessary tools for its implementation. Developers could therefore try to implement that feature by themselves.Multi-signature accounts / EscrowA multi-signature account allows several users to jointly manage assets (for instance, transactions with assets could only be allowed if signed by three users out of four). To create multi-signature accounts with RIDE, we can use transaction proofs.A multi-signature account could also be used for an escrow account, in which funds are held until transacting parties have satisfied their contractual obligations.let alicePubKey = base58'5AzfA9UfpWVYiwFwvdr77k6LWupSTGLb14b24oVdEpMM'let bobPubKey = base58'2KwU4vzdgPmKyf7q354H9kSyX9NZjNiq4qbnH2wi2VDF'let cooperPubKey = base58'GbrUeGaBfmyFJjSQb9Z8uTCej5GzjXfRDVGJGrmgt5cD'#checking who provided correct signatureslet aliceSigned = if(sigVerify(tx.bodyBytes, tx.proofs[0], alicePubKey)) then 1 else 0let bobSigned = if(sigVerify(tx.bodyBytes, tx.proofs[1], bobPubKey)) then 1 else 0let cooperSigned = if(sigVerify(tx.bodyBytes, tx.proofs[2], cooperPubKey)) then 1 else 0#adding all correct signatures and checking their numberaliceSigned + bobSigned + cooperSigned >= 2Token curated registry (TCR)Many blockchain platforms face the problem of toxic assets. For instance, on Waves Platform, any address that has paid the issuance fee can create an asset.One way to approach the toxic asset issue is with a token curated registry (TCR), generated by token holders.To vote to add a specific token to the list, holders place a stake corresponding to their share in the total number of issued tokens. A token is added to the registry if the majority of its holders vote for it.In our example, a user is allowed to add a token to the consideration list (during the “challenge” period) by the state key = asset_name solely if the current value of the count = 0.Also, the user has to have an non-zero balance of the token in question in their wallet. Then, during the voting period, the user can vote for each asset in their wallet, but just once, rating them on a scale from 1 to 10. Users’ votes are represented by keys that look like this: user_address+assetID.let asset = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'let addingStartHeight = 1000let votingStartHeight = 2000let votingEndHeight = 3000#extracting the sender’s address from the transactionlet this = extract(tx.sender)#extracting the address from the transaction’s prooflet address = addressFromPublicKey(tx.proofs[1])match tx {case t: DataTransaction =>if(height > addingStartHeight)then(if(height < votingStartHeight)then(#adding#checking if this address has this assetlet hasTokens = assetBalance(address, asset) > 0size(t.data) == 1#making sure this assets has not yet been added&& !isDefined(getInteger(this, toBase58String(asset)))#checking if 0 has been added by the asset key&& extract(getInteger(t.data, toBase58String(asset))) == 0&& hasTokens)else(if(height < votingEndHeight)then(#voting#finding out the current number of votes for this asset and the base numberlet currentAmount = extract(getInteger(this, toBase58String(asset)))let newAmount = extract(getInteger(t.data, toBase58String(asset)))let betString = toBase58String(address.bytes) + toBase58String(asset)#checking that this address has not yet voted for this assetlet noBetBefore = !isDefined(getInteger(this, betString))let isBetCorrect = extract(getInteger(t.data, betString)) > 0&& extract(getInteger(t.data, betString)) <= 10#checking if the voter has enough tokenslet hasTokens = assetBalance(address, asset) > 0#checking that the transaction is defined correctlysize(t.data) == 2 && isDefined(getInteger(this, toBase58String(asset)))&& newAmount == currentAmount + 1&& noBetBefore && isBetCorrect && hasTokens)else false) && sigVerify(tx.bodyBytes, tx.proofs[0], tx.proofs[1]))else falsecase _ => false}Subscription feeIn this example, we look at using smart accounts for executing a “subscription fee” — regular payments for goods or services in a set time frame.If a user sends to a smart account (through transaction proofs) an ID TransferTransaction with a required amount of transferred funds, they could add to the account state: {key: address, value: true}.This would mean that that the user confirms a subscription for goods or services. When the subscription period expires, any user in the network could change that value to false.let subscriptionPeriod = 44000let signature = tx.proofs[0]let pk = tx.proofs[1]let requiredAmount = 100000#extracting the sender’s address from the transactionlet this = extract(tx.sender)match tx {case d: DataTransaction =>#extracting the date of the most recent paymentlet lastPaymentHeight = extract(getInteger(this, d.data[0].key + "_lastPayment"))size(d.data) == 1 && d.data[0].value == "false" && lastPaymentHeight + subscriptionPeriod < height||(let address = d.data[0].key#extracting the transfer transaction by the ID indicated in the proofs.let ttx = transactionById(d.proofs[0])size(d.data) == 2&& d.data[0].value == "true"&& d.data[1].key == address + "_lastPayment"&& match ttx {case purchase : TransferTransaction =>d.data[1].value == transactionHeightById(purchase.id)&& toBase58String(purchase.sender.bytes) == address&& purchase.amount == requiredAmount&& purchase.recipient == this#making sure the asset is WAVES&& !isDefined(purchase.assetId)case _ => false})case _ => false}VotingSmart accounts could be used for implementing voting on the blockchain. One example is voting for the best ambassador’s report in an ambassador program. The account state is used as a platform to record votes for various options.In this example, only those who have purchased “voting” tokens can vote. A user sends a DataTransaction with (key, value) = (purchaseTransactionId, buyTransactionId). Other values for this key are not allowed. Using their address and voting option, a DataEntry can be done only once. Voting is allowed only within a specified period.let asset = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'let address = addressFromPublicKey(tx.proofs[1])let votingStartHeight = 2000let votingEndHeight = 3000#extracting the sender’s address from the transactionlet this = extract(tx.sender)match tx {case t: DataTransaction =>(height > votingStartHeight && height < votingEndHeight) &&#verifying that the signature of the transaction is correctsigVerify(tx.bodyBytes, tx.proofs[0], tx.proofs[1]) &&#verifying that the user puts his vote next to his addressif (t.data[0].key == toBase58String(address.bytes))then (#extracting the transaction for transfer of a voting token from the prooflet purchaseTx = transactionById(t.proofs[7])match purchaseTx {case purchase : TransferTransaction =>let correctSender = purchase.sender == t.senderlet correctAsset = purchase.assetId == assetlet correctPrice = purchase.amount == 1let correctProof = extract(getBinary(this, toBase58String(purchase.id))) == t.idcorrectSender && correctAsset && correctPrice && correctProofcase _ => false})elsesize(t.data) == 1 && !isDefined(getBinary(this, t.data[0].key))case _ => false}Bill of exchangeA bill of exchange is a written order under which one party is obliged to pay a fixed sum of money to another party on demand or at a predetermined date.In our example, a smart account is used, the expiration date of which corresponds to the payment date of the bill of exchange.let expiration = 100000let amount = 10let asset = base58'9jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'let Bob = Address(base58'3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8')let Alice = Address(base58'3PNX6XwMeEXaaP1rf5MCk8weYeF7z2vJZBg')match tx {case t: TransferTransaction =>(t.assetId == asset)&&(t.amount == amount)&&(t.sender == Bob)&&(t.recipient == Alice)&&(sigVerify(t.bodyBytes, t.proofs[0], t.senderPublicKey))&&(height >= expiration)case _ => false}DepositA deposit is the placement of funds at a bank under certain conditions (duration, interest rate). In our example, a smart account acts as a bank. After reaching a certain block height, which corresponds to the period of the deposit, a user can have their cash repaid with interest. In the script, a block height is set, after which the user can withdraw the deposited amount (finalHeight).heightUnit is the number of blocks in one period unit (such as a month or a year). Initially, we check the presence of a record with the pair (key, value) = (initialTransferTransaction, futureDataTransaction). Then, the user has to send a TransferTransaction with correct information on the deposited sum and interest collected over the deposit period. This information is checked against the initial TransferTransaction, which is contained in the current proof of the TransferTransaction. depositDivisor is the inverse of the deposit share (if the deposit is placed at a 10% interest, the share is 0.1 and depositDevisor equals 1/0.1 = 10).let this = extract(tx.sender)let depositDivisor = 10let heightUnit = 1000let finalHeight = 100000match tx {case e : TransferTransaction =>#extracting the height of the transaction by the transaction ID, which is in the seventh prooflet depositHeight = extract(transactionHeightById(e.proofs[7]))#extracting the deposit transactionlet purchaseTx = transactionById(e.proofs[7])match purchaseTx {case deposit : TransferTransaction =>let correctSender = deposit.sender == e.sender#checking that the user transfers to himself the correct sum of the deposit and the interestlet correctAmount = deposit.amount + deposit.amount / depositDivisor * (height - depositHeight) / heightUnit == e.amountlet correctProof = extract(getBinary(this, toBase58String(deposit.id))) == e.idcorrectSender && correctProof && correctAmountcase _ => false}&& finalHeight <= heightcase _ => sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)}In the third and final article in this series, we will look at some specific use cases for smart assets, including asset freezing and restricting transactions for specific addresses.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditApplication of Waves Smart Accounts and Smart Assets for Financial Instruments was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 03. 15

Waves Reward Token airdropp...

The token includes smart features and will be used by the community to thank our Ambassadors!We recently launched the Waves Reward Token programme. WRT is a special token that the community can use to thank some of the most influential and helpful members of the Waves ecosystem. As you may be aware, this token is also a calling card for some of the features that Waves’ smart assets can provide. For example, the attached script will ensure that only Ambassadors themselves can sell WRT. The tokens will only be redeemable with the Waves team.Airdrop reportLast week we issued a total of 1,744,400 Waves Reward Tokens. We dropped half of these — 872,200 WRT — to the 8,722 Waves addresses that contained at least 10 Waves Community Tokens. The remaining 872,200 were sent to the Waves team for future distributions.Reward your Ambassadors!We are in the process of compiling a list of Waves Ambassadors. Those on the list can be rewarded using WRT today. (Each time we include a new Ambassador, the script whitelist needs to be updated, so please bear with us as we add further members.) Some of our current Ambassadors include:Aleksandr Beloussov, Tallinn, EstoniaAleksandr has been with us for a year and a half and has done so many useful things for the platform that we cannot list them all here! (And no doubt you are already familiar with his work.) We would like to express our gratitude to Aleksandr for his contributions and hope that others like him will join us!Wallet: 3PKnYbrB3Ut3iyiMoLbugPAUqt4nWQSJBCHIrlan Pierre, Rio de Janeiro, BrazilIrlan is the founder of Waves’ Brazilian Community, and has attended several events in different regions of Brazil to spread the word about Waves. Thank you, Irlan!Wallet: 3PDEnVbcLhsYbssbLbo3mHCwZYPAxD9JQQZAleksei Pupyshev, St.Petersburg, RussiaAleksei is a consultant, tech advisor in the field of intelligent & decentralised systems, engineer and public speaker. He is also the founder, architect and CEO of Ventuary Inc, a decentralised reviews and ratings platform and consulting agency. He is the founder of, and instructor at, the Blockchain Education Club. He has Engineering/AI/Big Data management experience through his work at Wrike Inc. and MailRu Group.Wallet: 3P9jA8yJH1wLso6vVC4VqEC5j8QAQ4kFdfDToko Satoru, Tokyo, JapanToko comes from Tokyo, Japan, and is passionate about technology — especially blockchain. He has worked in the IT industry for many years, starting his career at Softbank in 2012 as an IT Solutions Consultant for enterprise clients in the financial sector, before working for several startups and SMEs. In 2017, Toko joined the International and Japanese Cryptocurrency and Blockchain projects as a volunteer, advisor, and translator. More recently, he established www.heros.studio to support international projects expanding their operations into the Japanese market.Wallet: 3PFqte55VmWVKazeeA3yHaSKKMH8uaDaJaiShaun Biggs, London, UKShaun Biggs, known by many as ‘biggzi’, is a blockchain and Waves enthusiast from London, UK. He has a varied background in Business and IT, and first got involved in blockchain back in 2013 when he set up his own bitcoin mining farm.Shaun has contributed to and helped promote Waves activities since its inception. He is well-known on Twitter and Facebook for sharing Waves-focused content, writing blogs and articles, featuring on podcasts and producing YouTube videos, as well as assisting with events and meetups. Shaun has consulted on Waves with a number of startups looking for blockchain partners, and assisted many new users in learning about Waves.Wallet: 3PKPNTzQiQjqxSUqQ5vUUpDrcEdZrNqXuuMMario Spercz, Warsaw, PolandMariusz Sperczyński represents the Blockchain Alliance, a Polish organisation well-known for its educational activity covering a wide range of topics around all aspects of decentralised systems and the surrounding industry. BA focuses its efforts on five areas of cooperation: education, research, prototyping, community and start-ups, as well as the recently-developed area of ​​implementation of enterprise blockchain solutions. See www.blockalliance.io/ for more details.Wallet: 3P9fJjn7Wekh9oYikoRsLMT78ahUJrWi62bDavid Plaut, Perth, AustraliaDavid is a Business Advisor with over 12 years of experience, helping predominantly small business owners minimise their tax costs, assisting with compliance, and providing digital transformation advisory and business strategy advisory services. David is a member of the Institute of Chartered Accountants for Australia and New Zealand, as well as the Taxation Institute of Australia. He is also a Microsoft Flow enthusiast and has created a MS Flow Connector & Mobile Notification for Waves, which can be found here and here.Wallet: 3P5XssF5utyr6iwoE8igARCcasFCoDwMSAQAlan Li, Hong Kong, ChinaAlan is an active member of the Hong Kong blockchain community and has played a significant role in the adoption and application of blockchain technology. He has 10 years’ experience in software consulting, digital marketing and e-commerce. He is the local Ambassador for Waves Platform, holding meetups and introducing blockchain technology to the local community. In addition, he manages our Chinese-speaking community.Wallet: 3P3rBo2sVzKZQvbQponRFWXmocCNSL4hGPXOrkhan Ahmadov, Baku, AzerbaijanOrkhan is a businessman from Azerbaijan and an active Waves Ambassador. He has organised around 10 meetups on blockchain, at which Waves Platform and other technologies were discussed. He also organised the Blockchain Conference Azerbaijan and the Blockchain Workshop in 2018, and first ever Blockchain Hackathon Baku in 2019.Wallet: 3PLkctrmnUGje5Pvnv9AC95bE1Vw3xbeckzYou can find the full list of Ambassadors here: https://docs.google.com/spreadsheets/d/1mM4QlCaU6e6DsjJIE-AAMVIqMlx8a1d0ggsmdzbVAjA/edit?usp=sharingWhat next?After a successful launch of the Ambassadors’ programme and WRT, we plan to expand the scope of both. Applications are now open for new Ambassadors. We will also be rewarding other influencers and content creators with WRT.Ideal candidates will have a collection of different skills and experience.Business & social media Ambassadors:Business development skillsSocial media skillsBackground in finance, gaming, IT, consulting or legal sector (desirable)Excellent at networkingKnowledge of Waves products and techFluent EnglishPublic speaking and pitching skillsEvent organisation experienceStrong communication skills and IT fluencyTech ambassadors:Extensive knowledge of Waves techBlockchain development experienceEstablished GitHub repoHackathon experienceTeaching experience (seminars, webinars, etc)To apply, visit https://airtable.com/shrGixQXilTuMwPx4.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves Reward Token airdropped to WCT holders was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 03. 13

Web3.0: the road ahead for ...

Web3.0: the road ahead for Waves — Waves PlatformWeb3.0: the road ahead for WavesIt’s the right time to kick-start the next iteration of the web, with smart, decentralised digital services powered by blockchain and the new technologies Waves is building.The concept of decentralization is, as a matter of fact, quite new. Surprisingly, it was first formulated around the 19th century, together with the concept of centralization itself. Before that time people did not really give much thought to the general principles of the things they built, be it society’s structure or technology. Creation of huge nation states drew attention to the general principles of society structure, and brought about suspicion that rigid vertical structures had their own drawbacks. Rigid hierarchy and chain of command do make a lot of sense in many situations, but this always creates centralized point of failure, making systems vulnerable and corruptible.In the late 20th century technology started to have an overwhelming effect on the development of society. Computer networks became the veins through which society’s blood flows; tech that we build has a huge impact on the society we live in. The concept of decentralized technology started to take shape in the late 70s, in the form of distributed computing and consensus research.The real breakthrough, at least in people’s minds, came with blockchain technology. For the first time in the history of human technology we were able to create truly decentralized systems controlled only by the protocol we feed into them. Blockchain is now more than 10 years old, and although we can’t do all the things we want with it just yet, we can do enough to try and go beyond prototypes and working use-cases. Mass adoption, that Holy Grail of any emerging technology, must be found ASAP, since the time has come. WEB2.0 corporations have come to hold too much power. We did not notice how they gained access to tons of sensitive and valuable big data, and now we have the kind of monopoly that just can’t last.WEB3.0, the concept which emerged at the end of the last century, is finally shaping up in the first real products that unify a host of different technologies (Big Data, AI, IoT…) on a decentralized footing. To kick-start the revolution it is of vital importance to create retail WEB3.0 products and working enterprise applications now. We need to go beyond the crypto-community to make the ideas that emerged within it truly work.We can’t achieve full decentralization just yet, and actually we might never achieve it. To make WEB3.0 a really useful concept we need to understand that the end-goal of WEB3.0 is the creation of robust, transparent, synergetic systems by any means necessary. Decentralizing critical business logic and using centralized tech where we can’t do without it (storage, complicated computation), we are able to create products that can gain mass adoption now, where there’s a real need in a new approach in the systems we are building. Data storage can be enhanced and allow for privacy protection. It’s time to get down to some fancy and sophisticated cryptography, such as homomorphic encryption, and really make it work. In the near future, I’m sure, we’ll also be able to use verifiable computation, using which one can outsource computation to third-parties and obtain verifiable results.The decentralized layer, of course, has to be improved to solve scalability issues that riddle blockchain systems now. Waves’ RIDE smart contracts language update will provide a new approach to decentralized computation and business logic, which is closer to the nature of blockchain systems. It will be on the Waves mainnet by June. Waves-NG maximizes what you can get from on-chain transactions in terms of speed. To go further you need either to move off-chain or create custom sidechains, that process specific sets of transactions. The second approach is closer to our philosophy of getting the maximum from the current technology before moving forward, and it will be implemented in the second half of 2019. Future systems may (and probably should) give up on total network synchronization completely, but there’s still a long way to go, and the current technology is mature enough to disrupt WEB 2.0 architecture.The gateway to our WEB3.0 world is going to be our Waves Keeper. Storing private keys user-side and not trusting any sensitive data to third parties is the key to WEB3, and Keeper does exactly that.The next architecture level is the Decentralized Business logic layer. Sensitive business logic running on smart contracts, encrypted important private data, monetization through tokenization — it all goes there. Going deeper we arrive at the Centralized Layer, which soaks up WEB3 ideas as well — data is encrypted, computation is verifiable.Based on this architecture we’re building several applications now, with mass adoption in mind.They tap into diverse markets but are unified by the ideas of tokenization, being accessible to a mass audience, and providing an unparalleled level of transparency.We are building a decentralized voting platform. This is one of the most promising directions for distributed tech. Its usage on the municipal level is starting to happen- and its widespread application is inevitable. Transparent, anonymous and verifiable voting can change the game completely.We build a social network. It might seem too ambitious but this is just the right moment to do it. Privacy preserving, tokenized social network can be a huge leap forward for social interaction. We know how to do it, and you’ll see a prototype this summer.We’re launching Vostok network, our WEB3.0 solution for enterprise. Any implementation of blockchain tech in enterprise is WEB3.0 by default, since only a combination of different technologies, on a decentralized footing, can make sense in a corporate environment. Without it blockchain is just a weird database.We don’t solely do blockchain tech any longer; it is just a part of a bigger picture. We’re becoming the first company that focuses exclusively on monetizable WEB3.0 applications. We want to become one of the first Googles or Facebooks of the future Internet. Godspeed to us, decentralize or die!Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditOriginally published at blog.wavesplatform.com on March 12, 2019.


19. 03. 12

Application of Waves Smart ...

Blockchain is often associated solely with cryptocurrencies, but application areas for DLT are far broader. One of the most promising directions for blockchain application is smart contracts: code that is executed automatically and that doesn’t require trust between the parties who agree it.RIDE: a smart contract languageWaves has developed a special language for smart contracts, RIDE. Complete documentation is available here.A RIDE-based contract is a predicate and returns either “true” or “false”. Respectively, a transaction is either added to the blockchain or rejected. A smart contract fully guarantees the execution of conditions set out in it. At this point, the option of generating transactions from a RIDE contract is not available.Currently, Waves offers two types of smart contracts, smart accounts and smart assets. A smart account is a user’s regular account, for which a script can be set that controls all transactions. A Smart Account’s script could look, for instance, like this:match tx {case t: TransferTransaction | MassTransferTransaction => falsecase _ => true}tx is a processed transaction that we allow, using the pattern matching tool, unless it is a TransferTransaction. In RIDE, pattern matching is used for checking the type of transaction. All existing [transaction types] (https://docs.wavesplatform.com/en/technical-details/transactions-structure.html) can be processed in a Smart Account’s script.A script can also use variables, “if-then-else” statements and other methods of proper verification of conditions. To facilitate contracts’ provable termination and complexity (value) that can be predicted prior to the contract’s execution, RIDE doesn’t have cycles or jump operators.Among Waves accounts’ other features is the state. An indefinite number of pairs (key, value) can be added to an account’s state using DataTransactions. Subsequently, that information can be processed either over REST API, or directly in the smart contract.Every transaction can contain an array of proofs, in which a participant’s signature, a transaction ID, etc, might be entered.Using RIDE in IDE https://ide.wavesplatform.com/ enables display of a smart contract’s compiled view (as long as it can be compiled), creation of new accounts and setting scripts for them, as well as sending transactions from the command prompt.For a full cycle that includes creating an account, adding a smart contract to it and sending a transaction, a library for REST API can be used (such as C#, C, Java, JavaScript, Python, Rust or Elixir). To start using IDE, just hit the NEW button.Smart contracts’ possible applications range from banning transactions to selected addresses (blacklisting) to creating complex dApps.Now we’ll consider several specific examples of smart contract application in business, such as auctions, insurance and customer loyalty programs.AuctionsTransparency is one of the conditions necessary for running a successful auction: participants have to be sure that bid manipulation is impossible. This can be achieved thanks to a blockchain on which immutable data for all bids and the times when they were made is available to all participants.On Waves’ blockchain, bids can be recorded in the auction’s account state using DataTransactions.In addition, the auction’s start and end times can be set using block numbers, as Waves’ block generation frequency is roughly 60 seconds.1. English (ascending price) auctionIn an English auction, buyers place bids, competing with each other to set the highest price. Every higher bid displaces an earlier bid. If no competing bidder challenges the current bid within a given time frame, the bidder who placed it becomes the winner.In a variation of this, the seller sets a minimum price for an item. If no buyer places a higher bid than this minimum price, the item remains unsold.In this example, we show a smart account specifically created for an auction. The auction’s time frame equals 3,000 blocks and the initial price equals 0.001 WAVES. A buyer can place a bid by sending a DataTransaction with the key “price” and the value of their bid.The price of any new bid has to be higher than the current price, and the bidder has to have at least [new price + fee] tokens in their balance. The bidder’s address is added to the “sender” field in a DataTransaction and the current height of the block has to be within the auction’s time frame.If a buyer places the highest bid, they pay for the item with an ExchangeTransaction specifying the price and asset pair.let startHeight = 384120let finishHeight = startHeight + 3000let startPrice = 100000#extracting the sender’s address from the transactionlet this = extract(tx.sender)let token = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'match tx {case d : DataTransaction =>#checking if the price is defined in the statelet currentPrice = if isDefined(getInteger(this, "price"))#extracting the price from the statethen extract(getInteger(this, "price"))else startPrice#extracting the price from the transactionlet newPrice = extract(getInteger(d.data, "price"))let priceIsBigger = newPrice > currentPricelet fee = 700000let hasMoney = wavesBalance(tx.sender) + fee >= newPrice#making sure there are two fields in the current transaction and the sender is the same as the same as stated in the transactionlet correctFields = size(d.data) == 2 &&d.sender == addressFromString(extract(getString(d.data,"sender")))startHeight <= height && height <= finishHeight && priceIsBigger && hasMoney && correctFieldscase e : ExchangeTransaction =>let senderIsWinner = e.sender == addressFromString(extract(getString(this, "sender"))) #making sure that the item is exchanged by the actual winnerlet correctAssetPair = e.sellOrder.assetPair.amountAsset == token && ! isDefined(e.sellOrder.assetPair.priceAsset)let correctAmount = e.amount == 1let correctPrice = e.price == extract(getInteger(this, "price"))height > finishHeight && senderIsWinner && correctAssetPair && correctAmount && correctPricecase _ => false}2. Dutch (descending-price) auctionIn a Dutch auction, an item is initially offered at a price exceeding the amount the buyer expects to pay. Then the price is gradually lowered until a bidder accepts the current price.In this example, we use the same tools as in the previous one, also adding a delta for a step price. The account’s script checks if a participant has actually placed the first bid for the current price. Otherwise, the blockchain doesn’t accept the DataTransaction.let startHeight = 384120let finishHeight = startHeight + 3000let startPrice = 100000000let delta = 100#extracting the sender’s address from the transactionlet this = extract(tx.sender)let token = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'match tx {case d : DataTransaction =>let currentPrice = startPrice - delta * (height - startHeight)#extracting from the received DataTransaction the “price” fieldlet newPrice = extract(getInteger(d.data, "price"))#making sure that there is no “sender” field in the current account’s statelet noBetsBefore = !isDefined(getInteger(this, "sender"))let fee = 700000let hasMoney = wavesBalance(tx.sender) + fee >= newPrice#making sure there are two fields in the current transactionlet correctFields = size(d.data) == 2 && newPrice == currentPrice && d.sender == addressFromString(extract(getString(d.data, "sender")))startHeight <= height && height <= finishHeight && noBetsBefore && hasMoney && correctFieldscase e : ExchangeTransaction =>#making sure that the current transaction’s sender is indicated in the account’s state by the “sender” keylet senderIsWinner = e.sender == addressFromString(extract(getString(this, "sender")))#making sure that the аmount asset is stated correctly and the price asset is waveslet correctAssetPair = e.sellOrder.assetPair.amountAsset == token && ! isDefined(e.sellOrder.assetPair.priceAsset)let correctAmount = e.amount == 1let correctPrice = e.price == extract(getInteger(this, "price"))height > finishHeight && senderIsWinner && correctAssetPair && correctAmount && correctPricecase _ => false}3. All-pay auctionAn all-pay auction is an auction in which all bidders pay, regardless of who wins the item. Every new bidder has to pay their bid, and the highest bidder wins the item, as in a conventional auction.In our example, every participant places a bid by sending a DataTransaction with (key, value)* = (“winner”, address),(“price”, price). A bidder’s Data Transaction only gets approved if a TransferTransaction signed by them already exists and the bid is higher than the earlier bids. The auction runs until endHeight is reached.let startHeight = 1000let endHeight = 2000let this = extract(tx.sender)let token = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'match tx {case d: DataTransaction =>#extracting the field “price” from the received transactionlet newPrice = extract(getInteger(d.data, "price"))#extracting the account’s public key from the transaction’s proofslet pk = d.proofs[1]let address = addressFromPublicKey(pk)#extracting proofTx from the proofs of the received DataTransactionlet proofTx = extract(transactionById(d.proofs[2]))height > startHeight && height < endHeight&& size(d.data) == 2#making sure the winner, extracted from the current transaction is the same as the address extracted from the proofs&& extract(getString(d.data, "winner")) == toBase58String(address.bytes)&& newPrice > extract(getInteger(this, "price"))#verifying that the transaction was signed&& sigVerify(d.bodyBytes, d.proofs[0], d.proofs[1])#checking the correctness of the transaction, stated in the proofs&& match proofTx {case tr : TransferTransaction =>tr.sender == address &&tr.amount == newPricecase _ => false}case t: TransferTransaction =>sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)|| (height > endHeight&& extract(getString(this, "winner")) == toBase58String((addressFromRecipient(t.recipient)).bytes)&& t.assetId == token&& t.amount == 1)case _ => sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)}Insurance / CrowdfundingLet’s consider a situation where we need to protect users’ assets from financial loss. For instance, a user may want to ensure that they will be able to recover the entire amount paid for tokens in case of the token’s devaluation, and are prepared to pay a reasonable insurance premium.For that purpose, “insurance tokens” will be issued. A script to the insured’s account is applied, allowing only ExchangeTransactions that meet certain conditions.To prevent double spending, the insured user initially needs to send a DataTransaction to the insurer’s account with (key, value) = (purchaseTransactionId, sellOrderId) and prohibit sending DataTransactions with the same keys.Consequently, the user’s proofs have to contain the ID of the transaction for the purchase of the insurance token. The asset pair has to be the same as in the purchase transaction. The price has to be equal to the token purchase price, with the insurance premium price deducted.It is implied that the insurer’s account will later buy the insurance tokens from the user at a price no lower than the purchase price. The insurer’s account will create an ExchangeTransaction, and the insured user will sign an order (if the transaction is correct). The insurer’s account will sign the second order and the entire transaction, and send it to the blockchain.If no purchase takes place, the user can create an ExchangeTransaction under conditions set in the script and send the transaction to the blockchain. That way, the user will recover the funds spent for the purchase of insured tokens.let insuranceToken = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'#extracting the sender’s address from the transactionlet this = extract(tx.sender)let freezePeriod = 150000let insurancePrice = 10000match tx {#verifying that if a DataTransaction has arrived, it has just one field and there is no second key in the statecase d : DataTransaction => size(d.data) == 1 && !isDefined(getBinary(this, d.data[0].key))case e : ExchangeTransaction =>#if a transaction doesn’t have the seventh proof, we’re verifying the signatureif !isDefined(e.proofs[7]) thensigVerify(e.bodyBytes, e.proofs[0], e.senderPublicKey)else#if the transaction has the seventh proof, we’re extracting from it the transaction and discovering its heightlet purchaseTx = transactionById(e.proofs[7])let purchaseTxHeight = extract(transactionHeightById(e.proofs[7]))#processing the transaction from the proofmatch purchaseTx {case purchase : ExchangeTransaction =>let correctSender = purchase.sender == e.sellOrder.senderlet correctAssetPair = e.sellOrder.assetPair.amountAsset == insuranceToken &&purchase.sellOrder.assetPair.amountAsset == insuranceToken &&e.sellOrder.assetPair.priceAsset == purchase.sellOrder.assetPair.priceAssetlet correctPrice = e.price == purchase.price - insurancePrice && e.amount == purchase.amountlet correctHeight = height > purchaseTxHeight + freezePeriod#verifying that the current transaction’s ID is stated correctly in the proof transactionlet correctProof = extract(getBinary(this, toBase58String(purchase.id))) == e.sellOrder.idcorrectSender && correctAssetPair && correctPrice && correctHeight && correctProofcase _ => false}case _ => sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)}The insurance token can be made a smart asset — for example, to prohibit its transfer to third parties.This scheme can also be used for crowdfunding tokens, which are to be returned to the holders if a required sum of money has not been collected.TaxationSmart contracts are also applicable in a situation when every transaction for several types of asset needs to be taxed. This can be implemented with a new asset, with added sponsorship for smart asset transactions:We issue FeeCoin, which will be sent to users at a fixed price: 0.01 WAVES = 0.001 FeeCoin.We set sponsorship for FeeCoin and specify the exchange rate: 0.001 WAVES = 0.001 FeeCoin.We set the following script for the smart asset:let feeAssetId = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf’let taxDivisor = 10match tx {case t: TransferTransaction =>t.feeAssetId == feeAssetId && t.fee == t.amount / taxDivisorcase e: ExchangeTransaction | MassTransferTransaction => falsecase _ => true}Now, every time someone transfers N smart assets, they will send you N / taxDivisor FeeCoins (which could be bought from you at 10 *N / taxDivisor WAVES) and will send N / taxDivisor WAVES to the miner. As a result, you will collect a profit (tax) of 9 *N / taxDivisor WAVES.Taxation could also be implemented with a smart asset script and MassTransferTransaction:let taxDivisor = 10match tx {case t : MassTransferTransaction =>let twoTransfers = size(t.transfers) == 2let issuerIsRecipient = t.transfers[0].recipient == addressFromString("3MgkTXzD72BTfYpd9UW42wdqTVg8HqnXEfc")let taxesPaid = t.transfers[0].amount >= t.transfers[1].amount / taxDivisortwoTransfers && issuerIsRecipient && taxesPaidcase _ => false}Cashback and loyalty schemesCashback is a type of a customer loyalty scheme in which a percentage of funds spent on goods or services is paid back to the customer.In the implementation of this case with a smart account, we need to check proofs in the same way as in the insurance use case. To prevent double spending, before collecting a cashback, a user has to send a DataTransaction with (key, value) = (purchaseTransactionId, cashbackTransactionId).Also, we need to prohibit setting DataTransactions with the same keys. cashbackDivisor is a reverse number for a cashback share. If the cashback share is 0.1, cashbackDivisor will be 1 / 0.1 = 10.let cashbackToken = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'#extracting the sender’s address from the transactionlet this = extract(tx.sender)let cashbackDivisor = 10match tx {#verifying that if a DataTransaction has arrived, it has just one field and that key is not yet in the statecase d : DataTransaction => size(d.data) == 1 && !isDefined(getBinary(this, d.data[0].key))case e : TransferTransaction =>#if the transaction has the seventh proof, we’re verifying the signatureif !isDefined(e.proofs[7]) thensigVerify(e.bodyBytes, e.proofs[0], e.senderPublicKey)else#if the transaction has the seventh proof, we’re extracting the transaction from it and finding out its heightlet purchaseTx = transactionById(e.proofs[7])let purchaseTxHeight = extract(transactionHeightById(e.proofs[7]))#processing the transaction from the proofmatch purchaseTx {case purchase : TransferTransaction =>let correctSender = purchase.sender == e.senderlet correctAsset = e.assetId == cashbackTokenlet correctPrice = e.amount == purchase.amount / cashbackDivisor#verifying that the current transaction’s ID is correctly stated in the proof transactionlet correctProof = extract(getBinary(this, toBase58String(purchase.id))) == e.idcorrectSender && correctAsset && correctPrice && correctProofcase _ => false}case _ => sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)}Atomic swapAn atomic swap enables users to swap assets without using exchanges. In an atomic swap, approval from both participants of the transaction is required within a specified time frame.If at least one of the participants fails to approve the transaction within the specified time frame, the transaction is cancelled and funds are not exchanged.In our example, we use a smart account script:let Bob = Address(base58'3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8')let Alice = Address(base58'3PNX6XwMeEXaaP1rf5MCk8weYeF7z2vJZBg')let beforeHeight = 100000let secret = base58'BN6RTYGWcwektQfSFzH8raYo9awaLgQ7pLyWLQY4S4F5'match tx {case t: TransferTransaction =>let txToBob = t.recipient == Bob && sha256(t.proofs[0]) == secret && 20 + beforeHeight >= heightlet backToAliceAfterHeight = height >= 21 + beforeHeight && t.recipient == AlicetxToBob || backToAliceAfterHeightcase _ => false}In our next article, we’ll look at the application of smart accounts for financial tools, such as options, futures and bills of exchange.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditApplication of Waves Smart Accounts: from Auctions to Customer Loyalty Schemes was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 03. 02

Waves Launches Waves Reward...

We are launching Waves Reward Token, a smart asset that the Waves community will be able to use to reward ambassadors.To incentivise Waves ambassadors and facilitate feedback from the community for our Ambassadors program, we are launching Waves Reward Token (WRT), which will also be used to demonstrate the potential of smart assets.Next week, all holders of Waves Community Token who hold at least 10 WCT in their wallets will receive 100 WRT. They will subsequently be able to send WRT to Waves ambassadors as a reward for their activities.The total number of issued WRT will be twice the supply of WCT held by the community. Waves will retain 50% of the total stake so that it can also reward ambassadors.Thanks to the smart asset’s script, only ambassadors will be able to sell WRT, which Waves will buy back.The smart asset will operate as follows:WRT can only be sent to whitelisted addresses (those of ambassadors)The token cannot be burntIt cannot be traded on DEX; only whitelisted addresses can sell itNew logic can be added to the scriptAs this programme is experimental, the smart asset will be renewable, available for renewal on a quarterly basis. If we see substantial interest, we may want to expand the programme to incentivise and reward the community’s most active members.By introducing WRT, we would like to encourage the Waves community to keep track of ambassadors’ activities, expressing opinions and rewarding them, if they deserve it.We expect the ambassadors to actively share information about this programme among the community and call on community members to participate. In turn, we will help our ambassadors share information about their activities within the Waves and crypto worlds!If you want to take part in this new initiative, make sure that you have at least 10 WCT in your wallet!Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves Launches Waves Reward Token was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 02. 28

Outstanding New Dice Game A...

We are thrilled to introduce a new Waves blockchain-powered game!The folks at Tradisys have delivered once again, with a fantastic new dice game. The smart-contract powered game is — hands down — better than anything else that currently exists in the blockchain space in terms of design and UX, technology and transparency.All you’ll need is a Waves wallet and Waves Keeper installed for your browser. The game is fully decentralised and you can actually check what’s going on behind the scenes as you play, meaning it’s absolutely transparent in real time.Start by selecting up to five numbers from your dice. The more faces you add, the higher your chances of winning — but your prize WAVES will be proportionally lower. You can stake 2, 5, 10, 15 or 20 WAVES on each game.When you hit Play, Waves Keeper will pop up and confirm your numbers, and the amount (including the transaction fees). After just a few seconds, you’ll find out what number you rolled and whether you won! If you did, the WAVES will appear in your account after 1 block or around 1 minute.There’s a built-in rating system and if you turn out to be lucky then you’ll end up on the leaderboard, as well as picking up some prize WAVES. If you’re not so lucky, you’ll be pleased to hear that all the WAVES collected from the game will be sent to the the Charity fund.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditOutstanding New Dice Game Added to Waves Ecosystem was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 02. 21

Waves statement on Bitcoin ...

Waves Statement on Bitcoin Cash Network SplitWe will shortly be opening gateways for the fork coins BCH and BSV.As you likely know, some time ago the Bitcoin Cash network hardforked and the ecosystem has now divided into two separate blockchains, Bitcoin Cash (BCH), and Bitcoin Cash Satoshi Vision (BSV).The two networks are now distinct, and BSV has subsequently established an independent trading history and community, while BCH (also known as Bitcoin Cash ABC or BCHABC) inherits and continues the trading history of the original coin. Since it is clear that both coins will have a future and value, we will be reflecting this in our treatment of Bitcoin Cash in the Waves Client.Balances snapshotWe will pause trading of BCH to take a snapshot of balances, after which BCH holders will receive an equal amount of BSV. Trading with then will be relaunched with the new asset. Two gateways, BCH and BSV, will be enabled, so that users can deposit and withdraw coins, and trade them on Waves DEX.At the time of writing, we are planning to hold the snapshot for BCH balances on Friday 22 February at 00:00 Pacific Time.Gateways will be enabled on Thursday 28 February at 23:00 Pacific Time.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves statement on Bitcoin Cash network split was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 02. 14

Waves dApps Roadmap for 2019

RIDE is Waves’ native smart contracts programming language. After a successful launch of basic functionality, we are now going to focusing on overhauling RIDE to extend it — making it more powerful, easier to use and enabling develops to access new blockchain functionality.RIDE PrinciplesRIDE is a blockchain scripting language, which enables ‘smart’ blockchain transactions. The execution result is predicated on certain logic, realised using RIDE scripts and deployed on the blockchain. The goal of RIDE’s architecture is to create a native on-chain computation layer which is as close to the general blockchain architecture (full data synchronisation) as possible.We strongly believe that Turing-completeness should not be essential for on-chain blockchain computations. The RIDE language itself is explicitly non-Turing complete. However, in the context of its execution environment (i.e the blockchain) it does allow for essentially Turing-complete computations that are ‘spread over’ more than one transaction in consecutive blocks.RIDE language supports the concept of fixed fees: that is, the same computational costs for the execution of any script. This results in the explicit limitation of scripts’ complexity and the lack of any gas-like requirements, as are found in Ethereum.Current Waves and RIDE architecturePrior to the introduction of RIDE, Waves’ core entities were Accounts, Tokens and Data.Accounts could hold TokensAccounts could have Data associated with themThe initial introduction of RIDE extended the idea of signing transactions: the default account predicate required a valid signature for any outgoing transaction for the given account’s public key. Smart Accounts allowed that to be changed to a custom condition: signatures, hashes, timelocks, arbitrary account data, and so on. To describe the Smart Account predicate, a RIDE function annotated with @Verifier and returning a Boolean value needs to be deployed to the blockchain.Just as Smart Accounts extend the ‘Valid signature requirement’ to a ‘Custom requirement’ for outgoing transactions, Smart Tokens extend the idea of “Any operation with a token is allowed, given that the invariants are satisfied” to ‘Any operation with a token is allowed, given the invariants are satisfied AND a token predicate condition (which is, again, based on signatures, hashes, timelocks, arbitrary account data, etc) is satisfied.’ To describe a Smart Token predicate, a RIDE expression returning a Boolean value needs to be deployed to the blockchain.So far the programmable capabilities of the Waves blockchain have remained passive, simply being predicates over user-initiated transactions.Introducing RIDE for dAppsTo improve on this shortcoming, RIDE for dApps is being introduced. This grants an account a way to assign a programmable function to itself. Each @Callable function is able toReceive paymentsChange the account’s stateSend WAVES and tokens from the accountTo initiate the call, a new InvokeScriptTranscation needs to be put on the blockchain. The sender pays fees to the miner for the invocation. The sender can optionally attach payment in WAVES or tokens, and upon invocation the contract state can be changed and the contract can make multiple payments.The current mechanics of authorisation scripts will be preserved under the @Verifier function of the account. You can think of it as an ‘admin’ function of the contract for owner(s). By default, a contract’s attributes (the contract itself, contract data and contract tokens) are controlled by the account’s private key. This can be changed to multisig and so on. If @Verifier is always false, the contract is sealed.@Callable(invocation)func fomo() = { WriteSet(…)}@Callable(invocation)func withdraw(amt: Int) = { TransferSet(…)}@Verifier(tx)func verify() = { false}Default functionAs an experiment, we are considering the introduction of yet another annotation: the @Default function for a contract. The idea here is to specify a callback function for receiving WAVES/tokens. For the system to be explicitly non-recursive, the @Default function can only change contract state.@Default(incomingTransfer)func onReceive() = { WriteSet(...)}RIDE improvementsFurther feedback we received from developers and hackathons relates to the lack of clarity and current immaturity of the API of the RIDE language. We address this in the upcoming release.First, we introduce the ability to write non-recursive functions.func maxPositive(a: Int, b: Int) = { func max(x:Int, y:Int) = { if (x>y) then x else y } max(max(a,b), 0)}The next issue we address is related to the syntax of reading values blockchain state/oracles. Since the value by key in an oracle/contract may not be present, the return type for getInteger, getBoolean, … is UNION(Integer/Unit), UNION(Boolean/Unit). To get the actual value the following syntax had to be used:let address = ...let value = extract(getInteger(address, “someKey”))To improve on that, another way of invoking functions is introduced (the left and right invocations are the same and only represent the syntax change):The current complexity for a script is set to 2,000, which is enough to check up to 19 signatures and any smaller subset of operations, but for dApps this is not enough. We will extend the maximum complexity for function invocation to 10k.The standard library will be improved in the upcoming release. The current set of functions and primitives was introduced as the minimum necessary for authorization scripts. With decentralised applications, this needs to be extended to support a wider range of common functionality like binary conversions, richer string operations, and so on.As part of extending the RIDE standard library, more functionality to query blockchain state will be added to RIDE. Detailed information on assets, balances, last blocks and miners will be exposed through a revamped blockchain API.Keys in account/contract storage are currently Strings. This is a useful limitation for DataTransactions as it provides readability and ease of use via REST API, but might be inefficient for dApp Storage, since it will require back-and-forth conversion if keys are designed to be bytevectors. We’ll provide a capability for storing values by bytevector keys.IDE and TestingCurrently, hints in IDE are limited to global functions and transaction types and fields. This is not enough for a smooth coding experience, so we will improve on that.The ability to test any code, especially smart contracts, is essential. As important as running manual tests on testnet is, a form of sandboxed unit testing preserving all the semantics can speed up development and debugging, and provide better quality assurance. To help with that, a test framework running actual node code(without the rest of the node) will be introduced.Here is a small example of how this framework will look like:val contract = Address(“seed”)val caller = Address(“seed 2”)val scriptText = “ @Callable(i) func foo(arg: Int) = { WriteSet(DataEntry(“arg”, arg)) }”transfer(wallet, contract, 1.waves)setScript(contract, scriptText)transfer(wallet, caller, 1.waves)contractInvocation(caller, contract, “foo”, List(42)))getInteger(contract, “arg”) shouldBe 42RoadmapJoin Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves dApps Roadmap for 2019 was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 01. 30

Microsoft Azure Cloud Featu...

Waves steps up integration with Microsoft Azure, making its Smart Asset and Smart Account functionality available to developers on the cloud platform.Waves’ smart accounts and smart assets are now available to developers on Azure Marketplace in a special extension for Visual Studio Code, which simplifies the process of creating and operating smart contracts.Two new virtual machine templates in Azure can be used for setting up new options on a public or private blockchain.‘Unlike other similar solutions, non-Turing complete smart contracts from Waves offer increased security and protection from vulnerabilities due to the option of restricting functionality to avoid undesirable use’, comments Sasha Ivanov, Founder and CEO of Waves Platform.‘A special extension for Microsoft Visual Studio Code editor will simplify the process of writing smart contracts for developers, allowing them to work in complete integration with Microsoft Azure cloud,’ he continues. ‘I am confident that users will hugely appreciate the variety of opportunities and possibilities this opens up for them!’‘We believe that supporting open-source platforms and facilitating the widespread availability of contemporary technological tools for the developer community is very important,’ says Konstantin Goldstein, Microsoft Russia’s principal technical evangelist.‘Waves is one of world’s leading blockchain platforms, which contributes substantially to the development of an ecosystem for global decentralised solutions, and we are glad to support the company in its development,’ he adds.Waves Platform has been deployed in Azure cloud since 2017.The functionality of Waves’ smart accounts and smart assets can be applied in a variety of use cases, including supply chain management, verification of documentation, organization of internal transactions, filing accounting reports and game development.Read more about Waves Smart Accounts and Smart Assets.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditMicrosoft Azure Cloud Features Waves’ Smart Assets and Smart Accounts was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 01. 29

New Smart Contract-Powered ...

We are pleased to introduce a new game based on Waves smart contracts. It’s very simple, but only the most patient player will win all the money…The game creators from Tradisys have been inspired by cult movie The Fifth Element and have created a game on the theme of the film. The game is completely decentralised: there are no sources of external influence and it is controlled solely by the rules of a smart contract. It uses Waves Keeper to ensure the process is safe and secure: because your SEED is never exposed to the web, you’re not trusting any third party with your funds.To take part, you need to transfer 1.1 WAVES to the smart contract of the game. Every time a participant enters the game, the countdown is reset and records a DataTransaction with the address of the last player’s wallet on the blockchain.To win, the counter must reach zero — with the last address to enter becoming the winner. If someone else sends a transaction and updates the counter, the previous player is eliminated. The wait duration for the counter is 60 blocks, which is approximately 60 minutes, though can be shorter or longer.To play you need:1. Desktop operating system (Windows, MacOs, Linux).2. The latest version of Google Chrome or Firefox.3. Waves Keeper installed (Chrome, FireFox).4. A minimum balance of 1.2 WAVES.Game instructions:1. Click the “Buy ticket” button.2. In the pop-up window, sign 2 transactions using Waves Keeper:- TransferTransaction (1.1 WAVES and 0.1 Commission)Then click NEXT- DataTransaction3. If the first two steps are carried out correctly, your payment will be recorded by the contract, and the counter at the top of the screen will be updated.4. The last player to buy a ticket before the countdown hits zero will receive the entire amount held by the smart contract.5. You can play at any time (if you’re not the last player to make a transaction, there’s no point in waiting).6. There is no limit to the number of entries a player can make.This is how the interface looks:The game is available here: multi-pass.clubFor technical information, developers can contact the creators of the game here: https://t.me/tradisys_globalIf you have questions about the game , you can ask them in the official Waves telegram chat — use the @tradisys tag.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditNew Smart Contract-Powered Game Launches on Waves was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 01. 23

Solving Challenges with Sma...

In late 2018, Waves Platform released Smart Assets on MainNet and launched Tokenomica, a fully compliant exchange for digital assets. This article, centered on use cases for Smart Assets, comes as the first in a series focused on how Waves solutions facilitate building the financial system of the future.Cryptocurrency TradingOver the last couple of years, regulated crypto exchanges have faced challenges related to compliance with requirements imposed by regulators. Specifically, those requirements include user identification and quality assurance of assets admitted to trading.Tokenomica offers a solution to these challenges based on technologies already proven successful on Waves DEX, and centered on Smart Accounts and Smart Assets.Smart Account is an account with an attached transaction script, which allows to validate every transaction before confirming it. Smart Account allows restricting any outgoing transaction based on multi-signatures and other supplied data.In Tokenomica, Smart Accounts will be used to allow outgoing transactions only to users that were previously identified and approved, or so called “whitelisted” users, in order to comply with relevant regulatory requirements.In addition, for compliance or security reasons, transactions could require two signatures: one from the user, and another one from Tokenomica.Smart Accounts will allow Tokenomica to make sure that any transaction made on the platform is only possible between whitelisted users.But what about the quality of traded assets? Here is where Smart Assets come into play.Smart Assets are unique tokens (meaning that they contain a unique set of rules provided in the script) that can be purchased, sold or exchanged as defined by the script, which validates every transaction within that asset.In Tokenomica, Smart Assets will be used to restrict trading to pre-approved pairs of assets. Pairs will be formed by assets compliant with relevant regulations, based on applicable rules and guidelines provided by the regulators.STOsAnother promising area for implementation of Smart Assets is Security Token Offerings (STOs). We define security tokens as financial instruments subject to securities markets regulation that are issued and traded with the use of blockchain.Smart Assets allow issuers to design their security tokens in a customized way, creating a fully compliant asset with attractive features for the investors.These are benefits that security tokens can bring to financial markets:Reduction of listing fees for issuers who will be able to access liquidity of secondary markets through security tokens trading platforms instead of going through burdensome and costly process of listing on traditional exchanges;Automated corporate actions, redemptions and periodical payments processed on the blockchain;Immediate execution of deals at any time — something that is not available on financial markets, bound by working hours of exchanges, custodians, clearing houses and other financial intermediaries;Access to new types of investors familiar with the industry, who will be willing to invest in security tokens to support technology based projects.What elements of a security token can be designed with the use of Smart Assets?Transferability of instruments and record keepingPre-emption rights: there are cases when a company’s shareholders are restricted from selling their shares to anyone except other shareholders. This restriction can be implemented in Smart Assets’ script, allowing the transfer of security tokens only between their holders.Qualification of investors: in some cases securities can be offered only to qualified or accredited investors. Breaching this requirement can lead to negative implications and fines for the issuers. Smart Assets’ script can incorporate a restriction allowing their transfer only to investors classified by the issuer as qualified or accredited.Record keeping: the issuer may be required to keep record of all its shareholders. Issuing a share in form of a Smart Asset creates an electronic database of shareholders on the blockchain, which is updated in real time taking into account every transaction with tokens between the investors.Convertible instrumentsIssuers can establish certain conditions for converting financial instruments into another type of security. For example, if a predetermined date is reached, an equity warrant can be converted into a share in the company. Such conditions can be implemented into Smart Assets and become automatically enforceable by the script, significantly reducing the burden for the administration of the conversion process.Payments and redemptionA process for periodical payments could be made substantially simpler and cheaper thanks to cutting intermediaries. If securities are issued on the blockchain, payments are made to token holders’ addresses, known to the issuers, which reduces the costs for payment administration.Also, with Smart Assets, a new payment option can be introduced allowing to calculate periodical payments based on a certain set of requirements. For example, the amount of dividends paid to a specific investor could increase depending on the amount of time for which the token is held by such an investor (so called “loyalty dividends”).In addition to periodical payments, securities have a redemption price, which can be fixed or calculated upon certain conditions. Those conditions can be implemented in Smart Assets’ script, making the redemption process fully automated for the issuers.Workable Solution for Financial MarketsSmart Assets represent a perfect solution for business models that require implementation of restrictions, required for compliance or other reasons.Just about any product to be offered in the financial services industry without breaching applicable laws and regulations, specifically when regulated cryptocurrency exchange or security token offerings are involved, is set to face restrictions.However, the good news is that Tokenomica offers a workable solution for regulatory challenges in the financial markets.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditSolving Challenges with Smart Assets was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 01. 15

Waves to Take Part in Block...

Next week, Waves will participate in Blockchain Gamer Connects, the first event dedicated exclusively to blockchain games and held simultaneously with Pocketgamer Connects and PC Connects on January 21–22.Waves’ Inal Kardanov will make a presentation called “Fueling the Revolution,” focused on disruption of existing relations between developer and player, which blockchain is bringing to the games sector.Currently, players own nothing in the game. They could spend money on buying an item or time on growing a character, but, in the end, they can’t sell or swap those.However, tokenization has the potential to revolutionize in-game economies, facilitating ownership of items by players. Legitimate trade of items for an in-game currency could also help to crack down on digital games’ black economy.Overall, Blockchain Gamer Connects will be centered on exploring blockchain technology’s potential to introduce inevitable changes into the games industry.Thanks to blockchain, a whole new category of dApps, enabling secondary markets for in-game digital assets and new models for rewarding players has arrived, but there are numerous other applications of the technology in the gaming sector, limited only by developers’ imagination.Inal’s presentation is to be held on January 21, at 12:20pm. In addition, Waves will host a VIP reception.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves to Take Part in Blockchain Gamer Connects was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 01. 14

Waves Christmas Game Proves...

Our Christmas game turned out to be a huge success. It entertained many over the holidays and the funds collected will benefit children from a hospice in Moscow.From 24 December to 8 January, hundreds of people had fun playing Waves’ Christmas game, developed in collaboration with Tradisys.In playing the game, users were not only able to try out Waves’ smart contracts, but also benefit a good cause, bringing joy to children at local hospice.Waves Smart Contracts pass the testThe Christmas game — Waves’ first MainNet gaming project — formed a major test for the application of Waves smart contracts and Waves Keeper within the gaming industry.Each game session launched by a player generated a smart contract, decentralising backend operations and ensuring that funds went exactly where they were intended.Now that the game is over, we can say that Waves’ smart contracts successfully passed the test with flying colours, proving their reliability and efficiency!Children to benefitOver the course of the game, players found more than 500 WAVES under the Xmas Tree. In total, over 1,100 games were played.Gamers donated 890 WAVES, to which we added 1,110 WAVES, making a total of 2,000 WAVES. These funds will be donated to the Children’s hospice.We at Waves are strongly convinced that blockchain can truly contribute to making this world a better place. And the success of the Christmas game comes as another testimony to the technology’s significant real-world adoption potential.To give developers a detailed understanding of how Waves smart contracts’ were used in the Christmas game, we will soon publish a more in-depth technical review.Join Waves CommunityRead Waves News channelFollow Waves TwitterSubscribe to Waves SubredditWaves Christmas Game Proves a Success! was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 01. 11

Transaction History
Transaction History Address
Bithumb Short cut
Exrates Short cut
Upbit Short cut
P2PB2B Short cut
Indodax Short cut
CoinAll Short cut
LiveCoin Short cut
EXMO Short cut
Hotbit Short cut
Sistemkoin Short cut
Binance Short cut
Huobi Global Short cut
Bittrex Short cut
YObit Short cut
Gate.io Short cut
HitBTC Short cut
Crex24 Short cut
STEX Short cut
Huobi Korea Short cut
Bitbns Short cut
BCEX Short cut
Coinsuper Short cut
Waves Short cut
COSS Short cut
Graviex Short cut
OKEx Short cut
ABCC Short cut
LiteBit.eu Short cut
Abucoins Short cut
Tidex Short cut
ProBit Short cut
Kuna Short cut
Security verification

There is security verification of the project
Why security verification is necessary?

Read more


* Written questions can not be edited.

* The questions will be answered directly by the token team.

Platform ERC20
Hard cap -
Audit -
Stage -
Location -