Neon-uri Module

Usage no npm install needed!

<script type="module">
  import cityofzionNeonUri from 'https://cdn.skypack.dev/@cityofzion/neon-uri';




NEP-9 is the standard for a URI schema for NEO. This package provides the ability to parse the string into a consumable intent object.

While the standard is written for Neo2 and there has not been any upgrades, the N3 version provides a more relaxed version with some additional support for general use cases.

For N3, the format is amended from NEP-9:


where usecase is an optional prefix that denotes the intent of the uri.

The following scenarios are supported:

NEP-17 token request

Token transfer will be the default intent if the prefix is missing.


where: |parameter |value | |-------------|----------------------------------| |toAddress | The receiving address of the transfer.| |contractHash | neo , gas or a contract hash.| |amount | integer amount of the asset to transfer. (Optional)|

For example,

to request 1 GAS for NNWAo5vdVJz1oyCuNiaTBA3amBHnWCF4Yk :


Neo vote request


where: |parameter |value | |----------------------|-----------------------------------------------------| |candidatePublicKey | The encoded public key of the candidate to vote for.|

For example,

to request votes for 02028a99826edc0c97d18e22b6932373d908d323aa7f92656a77ec26e8861699ef :



yarn i @cityofzion/neon-uri @cityofzion/neon-core
const uri = require("@cityofzion/neon-uri");


parse takes in a complete NEO uri string and returns an intent object:

const intent = parse(

The intent will look like:

    intent: "pay",
    description: "Transfer 100000000 GAS to NNWAo5vdVJz1oyCuNiaTBA3amBHnWCF4Yk",
    contractCall: {
        scriptHash: "d2a4cff31913016155e38e474a2c06d08be276cf",
        operation: "transfer",
        args: [{
                type: "Hash160",
                value: "" // Left empty for user to fill.
                type: "Hash160",
                value: "NNWAo5vdVJz1oyCuNiaTBA3amBHnWCF4Yk"
                type: "Integer",
                value: "100000000"
  • Assets neo and gas are automatically transformed into their respective scripthashes.
  • Runtime validation such as address and contract verifications are not performed during parsing.

createPayUri and createVoteUri are simple methods to help quickly create compliant uris:

const neonUri = require("@cityofzion/neon-uri");

const voteUri = neonUri.createVoteUri("02028a99826edc0c97d18e22b6932373d908d323aa7f92656a77ec26e8861699ef")

const payUri = neonUri.createPayUri("NNWAo5vdVJz1oyCuNiaTBA3amBHnWCF4Yk", "gas", 100000000)