NEO-ONE is a new end-to-end smart contract framework that aims to make it easy for users to create dApps on the NEO platform. It was developed by Alex DiCarlo, leader of the 5-man team behind the NEO blockchain explorer NEO Tracker, and supports smart contract development in TypeScript.

In addition to the smart contract framework itself, NEO-ONE also includes documentation and course material to simplify the learning process. The team aims to walk users through the entire development process for NEO smart contracts, allowing them to learn by doing.

Introduction

NEO-ONE was initially developed due to the requirements of NEO Tracker. Alex commented: “The first inklings of a framework began when we needed a way to track token transfers as well as have a fluent API for efficiently interacting with a NEO node. Once we had built all of the infrastructure and APIs needed for NEO Tracker, we felt that we had made something useful that others could leverage, so we started on the track of fleshing out the details of an end-to-end framework that would become NEO-ONE.”

Alex observed that many of the questions asked in NEO development channels were related to the core basics of development, such as setting up an environment. This indicated an issue that the team aimed to solve by developing an end-to-end framework, offering “effortless startup and empowering users with tooling every step of the way.”

The aim of the NEO-ONE project is to become a one-stop suite for dApp development on NEO. Alex commented: “Ultimately, our goal is that someone with zero NEO experience, and even zero blockchain experience, can get up and running with their first smart contract in 30 minutes or less.”

The NEO-ONE Framework

As an end-to-end framework, NEO-ONE is designed to be highly accessible. Users can do all of their coding and testing in-browser, so there is no requirement to set up a development environment beforehand. The editor includes features such as console.log, which works in smart contracts the same way it works in JavaScript, and the team also plans to add an integrated debugger to iron out any issues in the future.

Alternatively, developers may integrate the NEO-ONE CLI into the Atom or VSCode editors, where the same functionality can then be accessed. This includes the ability to automate testing by writing TypeScript unit tests, a key troubleshooting step for those looking to rapidly deploy dApps.

According to Alex, the team hopes that NEO-ONE will set a new standard in dApp development: “By making blockchain development a seamless and easy process, we hope to have an impact on the crypto ecosystem as a whole – if developers have to spend less time thinking about their smart contracts and how to integrate them, we hope that they’ll have more time to spend on the user experience of their dApp.”

Although existing NEO developers may have their own preferred setups for writing smart contracts, NEO-ONE can be used to streamline any part of their workflow as required. Alex explains: “For example, NEO-ONE drastically simplifies the process of setting up a local node, it just requires node installed and otherwise is a single command.”

“Everything from smart contract development, testing, local network management, client APIs for interacting with smart contracts and integrations with frameworks like React have been meticulously thought out and integrated to provide a development experience that no other framework, in NEO or any other blockchain, can provide.”

Adoption of TypeScript

The release of NEO-ONE also provides the first support for TypeScript on NEO, which is a statically typed superset of JavaScript. TypeScript is required to write smart contracts on the NEO-ONE platform, though JavaScript can be used to interact with them.

Alex commented: “We wanted to use a statically typed language for all the compile-time benefits it brings; without even running the code we can enforce invariants and ensure that it’s correct. Given JavaScript’s popularity and TypeScript’s rise to fame within the JavaScript world, TypeScript seemed like an obvious choice for building a new framework that necessitates correct code – we are dealing with financial transactions after all.”

The NEO-ONE team aims to provide developers with a surprise-free experience by efficiently implementing the entirety of the TypeScript language. For this to be possible, a series of small changes must be first be implemented in NeoVM, otherwise TypeScript smart contracts will be unnecessarily limited.

Amongst these changes is a bugfix that the NEO-ONE team actually prevented from hitting the MainNet. During their extensive testing, it was detected that the changes may have broken many existing smart contracts due to their reliance on the bugged NeoVM implementation. As this change is one which is required to properly support TypeScript smart contracts, a system must be implemented that allows existing contracts to use the old codepath, with new contracts using an updated codepath.

In the future, the team aims to “extend the end-to-end capabilities to other smart contract languages so that developers can use whatever they’re most comfortable with and still take advantage of NEO-ONE.”

Interactive Development Courses

Alongside the user friendly features of the NEO-ONE Editor, the team has also implemented course material that aims to onboard developers that are new to NEO or blockchain in general. By allowing users to build, test and write smart contracts directly from a browser, NEO-ONE hopes to lower the barrier to entry for dApp development.

After being asked if the course material was better suited for programming newcomers or experienced developers, Alex replied:

“Somewhere in between. We walk through all of the concepts, including the non-blockchain concepts, as if the developer has no experience. We provide external documentation links throughout the material to the more detailed NEO-ONE documentation on the subject at hand, to the TypeScript documentation for TypeScript specific knowledge as well as to any external library that we’re using during the course.”

Get Involved

As an open-source project, NEO-ONE is always looking for contributions. NEO News Today asked Alex what kind of input the community could provide that would prove valuable to the NEO-ONE project, to which he replied:

“Use the framework. Report bugs. Tell us what works and what doesn’t. Tell us what can be improved. We want to make this the best framework out there, and the only way that we can do that is with community help.

Beyond that, we have a laundry list of issues at the neo-one github that could use help, and once you’ve gotten a feel for developing on neo-one, there’s larger things that we need help with. For example, we have a strong integration story with React both from a developer perspective and from integrating for production, and we’d like to extend that to Angular, Vue, and any other framework that developers use for front-end development.”

Those looking to contribute to NEO-ONE can get started here.