# RBX Address Creation

## Summary:

The purpose of this document is to teach you how a RBX address is created. This will walk you through from the starting step to the very end which is a human readable address.

## How to create an RBX Address

**The correct way to create a RBX address is to use well tested, opensource, peer reviewed wallet software.** The manually handling keys can and has resulted in fund loss over and over again. Unlike other centralized systems, losses in RBX are usually unrecoverable. Please proceed at your own risk.

Here is a brief overview of how address generation works, for informational purposes:

Having a private ECDSA key

`18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725`

Take the corresponding public key generated with it and add '04' hex identifier. RBX private keys are created from Ecdsa multiplication of

`(curve.G, secret, curve.N, curve.A, curve.P)`

. In code it appears as this:`multiply(Point p, BigInteger n, BigInteger N, BigInteger A, BigIntegerP)`

Fast way to multiply point and scalar in elliptic curves

param p: First Point to multiply

param n: Scalar to multiply

param N: Order of the elliptic curve

param P:

`Prime number in the module of the equation Y\^2 = X \^ 3 + A \* X + B(mod p)`

param A:

`Coefficient of the first-order term of the equation Y \^ 2 = X \^ 3 + A \* X + B(mod p)`

return:

**Point that represents the sum of First and Second Point**

This can be seen in code under EllipticCurve->Math

Please note many ECDSA libraries out there handle public keys this way, so you may not have to do the above jacobian math.

`\[04\*\*added\]50863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6 =`

0450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6Perform SHA-256 hashing on the public key from step 1.

`600ffe422b4e00731a59557a5cca46cc183944191006324a447bdb2d98d4b408`

Perform RIPEMD-160 hashing on the result of SHA-256 from step 2.

`010966776006953d5567439e5e39f86a0d273bee`

Add version byte in front of RIPEMD-160 hash (0x3C for Main Network) from step 3.

`3c010966776006953d5567439e5e39f86a0d273bee`

*(note that below steps are the Base58Check encoding, which has multiple library options available implementing it)*Perform SHA-256 hash on the extended RIPEMD-160 result from step 4.

`24295fdd7e8c04bbc84f1e5151b4afa3380f900a5da58533a647c36fdc2d4cfd`

Perform SHA-256 hash on the result of the previous SHA-256 hash from step 5.

`3699e7d4f297550311c32721b57c801f873d07ef5a886cbd07146f478178b362`

Take the first 4 bytes of the second SHA-256 hash. This is the address checksum from step 6.

`3699e7d4`

Add the 4 checksum bytes from stage 7 at the end of extended RIPEMD-160 hash from stage 4. This is the 25-byte binary RBX Address.

`3c010966776006953d5567439e5e39f86a0d273bee3699e7d4`

Convert the result from a byte string into a base58 string using Base58Check encoding from step 8.

`R9Ng1rDS2YgB7R2bJMU3RKzVXSriXLRsBR`