This document presents the technical roadmap of the Purplecoin project. Please note that these are subject to change before the release. The roadmap branches off a higher level with subsections describing a greater level of detail.
-
Consensus layer
- Implement sector blocks
- Implement shard blocks
- Implement RSA accumulators
- Optimise hashing to primes
- Use multiple accumulators per block
- Benchmark accumulator code in order to determine optimum number of sectors and shards
- Implement difficulty calculation
- Green PoW implementation
- Update RandomX to GhostRider
- Sequence PoW algorithms
- Choose minimum mainnet difficulty
- Determine ASIC friendly hash functions
- Aggregate outputs with same spend script and receiver in the same block
- Implement canonical transaction ordering
- Implement partially spendable outputs
- Block serialization
- Transaction serialization
- Script arguments serialization
- Headers MMR implementation
- Find a way to dynamically determine the minimum fee for acceptance into the mempool
- Implement optimal atomic asset exchange script and use it as a default script
- Implement coloured assets
-
Implement VM opcodes
- OP
0x00
Func - Start a function definition - OP
0x01
BaseContext - Pushes to the top of the stack the base cryptographic context, which can be used to create application specific contexts by appending other contexts to it before being passed to cryptographic opcodes. The base context is specific to the current shard. - OP
0x02
OpenImplicitCert - Pops a public key, transcript, context, and implicit certificate from the top of the stack and extracts the public key from the certificate. - OP
0x03
OpenImplicitCertGlobal - Pops a public key, transcript, and an implicit certificate from the top of the stack and extracts the public key from the certificate. If successful, pushes the public key to the top of the stack. This receives the global context (network name) and is thus global. Public keys work on all shards. UseOP_OpenImplicitCertScoped
for public keys which work only on a specific shard. - OP
0x04
OpenImplicitCertScoped - Pops a public key, transcript, and an implicit certificate from the top of the stack and extracts the public key from the certificate. If successful, pushes the public key to the top of the stack. This receives the current context of the shard and is thus scoped to it. Public keys only work for this shard. UseOP_OpenImplicitCertGlobal
for public keys which work on all shards. - OP
0x05
VerifyInline - Pops a transcript, signature, public key, and message, then verifies inline. Pushes1
to the top of the stack if successful, and0
otherwise. - OP
0x06
Ok - Stops script execution and returns theOk
code. Equivalent to pushing1
to the stack then callingOP_Return
. - OP
0x07
ChainId - Pushes the currentchain_id
onto the stack - OP
0x08
ChainHeight - Pushes the currentchain_height
onto the stack - OP
0x09
ChainTimestamp - Pushes the current timestamp of the chain onto the stack as aSigned64
- OP
0x0a
Pi - Pushes pi to the top of the stack as aDecimal
. - OP
0x0b
PrevBlockHash - Pushes the previous block hash onto the stack as aHash256
- OP
0x0c
NetworkName - Pushes the network name as aUnsigned8Array
to the top of the stack. - OP
0x0d
RandomHash160Var - Pushes a randomHash160
onto the stack - OP
0x0e
RandomHash256Var - Pushes a randomHash256
onto the stack - OP
0x0f
RandomHash512Var - Pushes a randomHash512
onto the stack - OP
0x10
RandomUnsigned8Var - Pushes a randomUnsigned8
onto the stack - OP
0x11
RandomUnsigned16Var - Pushes a randomUnsigned16
onto the stack - OP
0x12
RandomUnsigned32Var - Pushes a randomUnsigned32
onto the stack - OP
0x13
RandomUnsigned64Var - Pushes a randomUnsigned64
onto the stack - OP
0x14
RandomUnsigned128Var - Pushes a randomUnsigned128
onto the stack - OP
0x15
RandomSigned8Var - Pushes a randomSigned8
onto the stack - OP
0x16
RandomSigned16Var - Pushes a randomSigned16
onto the stack - OP
0x17
RandomSigned32Var - Pushes a randomSigned32
onto the stack - OP
0x18
RandomSigned64Var - Pushes a randomSigned64
onto the stack - OP
0x19
RandomSigned128Var - Pushes a randomSigned128
onto the stack - OP
0x1a
RandomFloat32Var - Pushes a randomFloat32
onto the stack - OP
0x1b
RandomFloat64Var - Pushes a randomFloat64
onto the stack - OP
0x1c
RandomDecimalVar - Pushes a randomDecimal
onto the stack - OP
0x1d
Floor - Returns the largest integer less than or equal to the float/decimal. - OP
0x1e
Ceil - Returns the smallest integer less than or equal to the float/decimal. - OP
0x1f
IsNaN - Pushes1
to the top of the stack if the float is NaN. Otherwise pushes0
. - OP
0x20
IsInfinite - Pushes1
to the top of the stack if the float is infinite. Otherwise pushes0
. - OP
0x21
Ln - Pops a term from the top of the stack, performs the natural logarithm, and pushes it back on the stack. - OP
0x22
Exp - Pops a term from the top of the stack, performse^x
and pushes the term to the top of the stack. - OP
0x23
Hash160Var - Pushes aHash160
onto the stack - OP
0x24
Hash256Var - Pushes aHash256
onto the stack - OP
0x25
Hash512Var - Pushes aHash512
onto the stack - OP
0x26
Unsigned8Var - Pushes anUnsigned8
onto the stack - OP
0x27
Unsigned16Var - Pushes anUnsigned16
onto the stack - OP
0x28
Unsigned32Var - Pushes anUnsigned32
onto the stack - OP
0x29
Unsigned64Var - Pushes anUnsigned64
onto the stack - OP
0x2a
Unsigned128Var - Pushes anUnsigned128
onto the stack - OP
0x2b
UnsignedBigVar - Pushes anUnsignedBig
onto the stack - OP
0x2c
Signed8Var - Pushes aSigned8
onto the stack - OP
0x2d
Signed16Var - Pushes aSigned16
onto the stack - OP
0x2e
Signed32Var - Pushes aSigned32
onto the stack - OP
0x2f
Signed64Var - Pushes aSigned64
onto the stack - OP
0x30
Signed128Var - Pushes aSigned128
onto the stack - OP
0x31
SignedBigVar - Pushes aSignedBig
onto the stack - OP
0x32
Float32Var - Pushes aFloat32
onto the stack - OP
0x33
Float64Var - Pushes aFloat64
onto the stack - OP
0x34
DecimalVar - Pushes aDecimal
onto the stack - OP
0x35
Hash160ArrayVar - Pushes aHash160Array
onto the stack - OP
0x36
Hash256ArrayVar - Pushes aHash256Array
onto the stack - OP
0x37
Hash512ArrayVar - Pushes aHash512Array
onto the stack - OP
0x38
Unsigned8ArrayVar - Pushes aUnsigned8Array
onto the stack - OP
0x39
Unsigned16ArrayVar - Pushes aUnsigned16Array
onto the stack - OP
0x3a
Unsigned32ArrayVar - Pushes aUnsigned32Array
onto the stack - OP
0x3b
Unsigned64ArrayVar - Pushes aUnsigned64
onto the stack - OP
0x3c
Unsigned128ArrayVar - Pushes aUnsigned128Array
onto the stack - OP
0x3d
UnsignedBigArrayVar - Pushes aUnsignedBigArray
onto the stack - OP
0x3e
Signed8ArrayVar - Pushes aSigned8Array
onto the stack - OP
0x3f
Signed16ArrayVar - Pushes aSigned16Array
onto the stack - OP
0x40
Signed32ArrayVar - Pushes aSigned32Array
onto the stack - OP
0x41
Signed64ArrayVar - Pushes aSigned64Array
onto the stack - OP
0x42
Signed128ArrayVar - Pushes aSigned128Array
onto the stack - OP
0x43
SignedBigArrayVar - Pushes aSignedBigArray
onto the stack - OP
0x44
Float32ArrayVar - Pushes aFloat32Array
onto the stack - OP
0x45
Float64ArrayVar - Pushes aFloat64Array
onto the stack - OP
0x46
DecimalArrayVar - Pushes aDecimalArray
onto the stack - OP
0x47
GetAtArray - Duplicates the element at index in array and pushes it on top of the stack - OP
0x48
PushBackArray - Pushes the second item on the stack to the back of the array which is the first item on the stack - OP
0x49
PushFrontArray - Pushes the second item on the stack to the front of the array which is the first item on the stack - OP
0x4a
ArrayLen - Pushes on top of the stack the len of the array currently on top of the stack - OP
0x4b
GetType - Pushes on top of the stack the type code of the value currently on top of the stack as aUnsigned8
- OP
0x4c
PopBackArray - Pops the last item in the given array and pushes it to the top of the stack - OP
0x4d
PopFrontArray - Pops the first item in the given array and pushes it to the top of the stack - OP
0x4e
DeleteAtArray - Deletes the element at index in array and pushes it on top of the stack - OP
0x4f
ClearStack - Clears the stack - OP
0x50
Add - Pops the two topmost items on the stack, performs addition and pushes the result on the stack - OP
0x51
Sub - Pops the two topmost items on the stack, performs subtraction and pushes the result on the stack - OP
0x52
Mult - Pops the two topmost items on the stack, performs multiplication and pushes the result on the stack - OP
0x53
Div - Pops the two topmost items on the stack, performs division and pushes the result on the stack - OP
0x54
BitSHLeft - Pops the two topmost items on the stack, performs a left bit shift operation on the first operand and then pushes the result on the stack - OP
0x55
BitSHRight - Pops the two topmost items on the stack, performs a right bit shift operation on the first operand and then pushes the result on the stack - OP
0x56
BitXOR - Pops the two topmost items on the stack, performs bit exclusive OR on the operands and then pushes the result on the stack - OP
0x57
Loop - Starts a loop block - OP
0x58
Break - Breaks the current loop - OP
0x59
BreakIf - Breaks the current loop if the topmost item on the stack is1
- OP
0x5a
BreakIfn - Breaks the current loop if the topmost item on the stack is not equal to1
- OP
0x5b
BreakIfEq - Breaks the current loop if the two topmost items on the stack are equal - OP
0x5c
BreakIfNeq - Breaks the current loop if the two topmost items on the stack are not equal - OP
0x5d
BreakIfLeq - Breaks the current loop if the topmost item on the stack is less or equal than the second - OP
0x5e
BreakIfGeq - Breaks the current loop if the topmost item on the stack is greater or equal than the second - OP
0x5f
BreakIfLt - Breaks the current loop if the topmost item on the stack is less than the second - OP
0x60
BreakIfGt - Breaks the current loop if the topmost item on the stack is greater than the second - OP
0x61
Continue - Moves to the next iteration of the current loop - OP
0x62
ContinueIf - Moves to the next iteration of the current loop if the topmost item on the stack is equal to1
- OP
0x63
ContinueIfn - Moves to the next iteration of the current loop if the topmost item on the stack is not equal to1
- OP
0x64
ContinueIfEq - Moves to the next iteration of the current loop if the two topmost items on the stack are equal - OP
0x65
ContinueIfNeq - Moves to the next iteration of the current loop if the two topmost items on the stack are not equal - OP
0x66
ContinueIfLeq - Moves to the next iteration of the current loop if the topmost item on the stack is less or equal than the second - OP
0x67
ContinueIfGeq - Moves to the next iteration of the current loop if the topmost item on the stack is greater or equal than the second - OP
0x68
ContinueIfLt - Moves to the next iteration of the current loop if the topmost item on the stack is less than the second - OP
0x69
ContinueIfGt - Moves to the next iteration of the current loop if the topmost item on the stack is greater than the second - OP
0x6a
Depth - Pushes the depth of the current frame onto the stack as anUnsigned16
- OP
0x6b
Factorial - Pops the topmost item from the stack and performs a factorial operation on it. - OP
0x6c
Drop - Removes the topmost item on the stack - OP
0x6d
Dup - Duplicates the topmost item on the stack - OP
0x6e
Nip - Removes the second item on the stack - OP
0x6f
Over - Duplicates the second item on the stack - OP
0x70
Pick - Duplicates then
th item on the stack - OP
0x71
Roll - Then
th item on the stack is moved to the top - OP
0x72
Rot - The three topmost items on the stack are rotated to the left - OP
0x73
Swap - The two topmost items on the stack are swapped - OP
0x74
Tuck - The topmost item on the stack is copied and inserted before the second-to-top item - OP
0x75
Drop2 - Removes the first two topmost items on the stack - OP
0x76
Dup2 - Duplicates the first two topmost items on the stack - OP
0x77
Dup3 - Duplicates the first three topmost items on the stack - OP
0x78
Over2 - Duplicates the third and fourth items on the stack - OP
0x79
Rot2 - The fifth and sixth topmost items on the stack are moved to the top - OP
0x7a
Swap2 - Swaps the topmost pairs of terms on top of the stack - OP
0x7b
Size - Pushes the size in bytes of the topmost item on the stack - OP
0x7c
Substr - Splits the given array at position n and pushes both arrays to the top of the stack - OP
0x7d
BitAND - Pops the two topmost items on the stack, performs bit AND on the operands and then pushes the result on the stack - OP
0x7e
BitOR - Pops the two topmost items on the stack, performs bit OR on the operands and then pushes the result on the stack - OP
0x7f
BitInvert - Inverts all bits of the topmost item on the stack - OP
0x80
DupAll - Duplicates the whole stack - OP
0x81
IsUTF8 - Pushes1
on top of the stack if the givenUnsigned8Array
is a valid UTF8 byte sequence - OP
0x82
Add1 - Adds1
to the topmost item on the stack - OP
0x83
Sub1 - Subtracts1
from the topmost item on the stack - OP
0x84
Min - Returns the minimum of the two topmost items on the stack - OP
0x85
Max - Returns the maximum of the two topmost items on the stack - OP
0x86
Within - Pushes1
on top of the stack if the topmost item on the stack is between the second and the third,0
otherwise - OP
0x87
BoolAnd - And control operator - OP
0x88
BoolOr - Or control operator - OP
0x89
Negate - If the topmost item on the stack is1
, turns it into a0
. If the topmost item on the stack is anything but1
it turns it into a1
- OP
0x8a
Abs - Returns the absolute value of the topmost item on the stack - OP
0x8b
Pow - Raises the second item popped from the stack to the power of the first item popped from the stack. - OP
0x8c
Rem - Returns the remainder of the division of the first item popped from the stack with the second item popped from the stack. - OP
0x8d
Round - Rounds the second item popped from the stack to the number decimal points which is the first item popped from the stack. - OP
0x8e
PushExecCount - Pushes the current amount of opcodes that have been executed to the top of the stack. - OP
0x8f
FlushToScriptOuts - Flushes the terms on the current frame to the script outputs stack - OP
0x90
PopToScriptOuts - Pops the topmost item on the stack and pushes it to the script outputs stack - OP
0x91
PickToScriptOuts - Duplicates then
th item on the stack and pushes it to the script outputs stack - OP
0x92
TrapIf - Traps if - OP
0x93
TrapIfEq - Traps if the two topmost items on the stack are equal - OP
0x94
TrapIfNeq - Traps if the two topmost items onf the stack are not equal - OP
0x95
TrapIfLeq - Traps if the first item on the stack is less than or equal than the second - OP
0x96
TrapIfGeq - Traps if the first item on the stack is greater or equal than the second - OP
0x97
TrapIfLt - Traps if the first item on the stack less than the second - OP
0x98
TrapIfGt - Traps if the first item on the stack is greater than the second - OP
0x99
TrapIfNeqType - Pops the first item on the stack and traps if its type not equal to the given type id - OP
0x9a
ToHex - Converts the topmost item on the stack to hexadecimal - OP
0x9b
FromHex - Parses the topmost item on the stack from hexadecimal - OP
0x9c
InputsLen - Pushes the number of inputs in the current transaction to the top of the stack - OP
0x9d
OutputsLen - Pushes the number of outputs currently generated by the transaction to the top of the stack - OP
0x9e
PeekArray - Duplicates the last element of the given array and pushes it to the top of the stack. - OP
0x9f
ClearArray - Removes all elements of the given array. - OP
0xa0
VerifyEd25519 - Takes the given public key and signature, and pushes them along with the current input's binary format to the Ed25519 signature verification stack and stops script execution. - OP
0xa1
VerifyEd25519Inline - Takes the given public key, signature, and message and verifies with Ed25519. Pushes1
on top of the stack if verification is successful. - OP
0xa2
VerifyEcdsa - Takes the given public key, signature, and the binary format of the current output, verifies and stops script execution. Can be used for compatibility with Bitcoin/Ethereum or any other blockchain using ECDSA. - OP
0xa3
VerifyEcdsaInline - Takes the given public key, signature, and message and verifies with ecdsa. Pushes1
on top of the stack if verification is successful. - OP
0xa4
VerifyBIP340 - Takes the given public key and signature, and pushes them along with the current input's binary format to the BIP340 signature verification stack and stops script execution. For direct compatibility with Bitcoin Taproot keys. - OP
0xa5
VerifyBIP340Inline - Takes the given public key, signature, and message and verifies according to BIP340. Pushes1
on top of the stack if verification is successful. For direct compatibility with Bitcoin Taproot. - OP
0xa6
GetOutAmount - Receives and index and pushes the amount of the output at the given index on the output stack to the top of the stack - OP
0xa7
GetOutReceiver - Receives and index and pushes the address of the receiver at the given index on the output stack to the top of the stack. Pushes0
of the output does not have a receiver address. If the output is coloured, pushes a coloured address. - OP
0xa8
GetOutScriptHash - Receives and index and pushes the script hash of the output at the given index on the output stack to the top of the stack. - OP
0xa9
GetOutScriptOutsLen - Pushes the number of script outs the output at the given index has on top of the stack. - OP
0xaa
GetOutScriptOut - Receives two indexes. Pushes the script output at the second given index of the output at the first given index to the output stack. - OP
0xab
SpillScriptOuts - Pushes all the script outputs of the output with the given index to the stack. - OP
0xac
IsColouredOut - Receives and index and pushes1
on top of the stack if the output is coloured,0
otherwise. - OP
0xad
ColourHash - Pushes to the top of the stack the colour hash of the output at the given index. Pushes a zero hash if the output is an XPU output. - OP
0xae
CallBody - Parses the topUnsigned8Array
on the stack as a script, and if successful executes it. Pops from the top of the stack the number of terms the script specifies. Traps if the script doesn't have enough terms on the top of the stack to take. - OP
0xaf
Call - Calls the function with the given index. - OP
0xb0
Concat - Concat the two topmost items on the stack - OP
0xb1
Eq - Pushes1
on top of the stack if the two topmost items on the stack are equal - OP
0xb2
Neq - Pushes1
on top of the stack if the two topmost items on the stack are not equal - OP
0xb3
If - If control operator - OP
0xb4
Ifn - If not control operator - OP
0xb5
Else - Else control operator - OP
0xb6
End - Ends the current block - OP
0xb7
Verify - Pushes the current output's binary format to the signature verification stack and stops script execution - OP
0xb8
ReturnFunc - Returns from the current function and moves the terms on the current frame to the parent frame. Behaves the same asReturn
if called from the main function - OP
0xb9
Return - Stops script execution and succeeds if the topmost item on the stack is1
- OP
0xba
EqVerify - Pushes the current output's binary format to the signature verification stack and stops script execution if the two topmost items on the stack are equal - OP
0xbb
Lt - Pushes1
on top of the stack if the topmost item on the stack is less than the second item on stack - OP
0xbc
Gt - Pushes1
on top of the stack if the topmost item on the stack is greater than the second item on stack - OP
0xbd
Leq - Pushes1
on top of the stack if the topmost item on the stack is less or equal than the second item on stack - OP
0xbe
Geq - Pushes1
on top of the stack if the topmost item on the stack is greater or equal than the second item on stack - OP
0xbf
IfLt - If less than control operator - OP
0xc0
IfGt - If greater than control operator - OP
0xc1
IfLeq - If less or equal control operator - OP
0xc2
IfGeq - If greater or equal control operator - OP
0xc3
IfEq - If equal control operator - OP
0xc4
IfNeq - If not equal control operator - OP
0xc5
LtVerify - Pushes the current output's binary format to the signature verification stack and stops script execution if the topmost item on the stack is less than the second item on the stack - OP
0xc6
GtVerify - Pushes the current output's binary format to the signature verification stack and stops script execution if the topmost item on the stack is greater than the second item on the stack - OP
0xc7
LeqVerify - Pushes the current output's binary format to the signature verification stack and stops script execution if the topmost item on the stack is less or equal than the second item on the stack - OP
0xc8
GeqVerify - Pushes the current output's binary format to the signature verification stack and stops script execution if the topmost item on the stack is greater or equal than the second item on the stack - OP
0xc9
NeqVerify - Pushes the current output's binary format to the signature verification stack and stops script execution if the two topmost items on the stack are not equal - OP
0xca
CastTo - Casts the topmost item on the stack to the type id which is the second item on the stack - OP
0xcb
InputScriptArgsLen - Pushes the number of script args of the input at the given index to the top of the stack - OP
0xcc
GetInputScriptArgAt - Pushes the script argument at the second given index of the input at the first given index to the top of the stack - OP
0xcd
SpillInputScriptArgs - Pushes all the script args of the input at the given index to the top of the stack. - OP
0xce
Sqrt - Pops a term from the top of the stack, performs sqrt and pushes it back to the top of the stack. - OP
0xcf
Zero - Pushes zero as anUnsigned8
to the top of the stack. - OP
0xd0
One - Pushes one as anUnsigned8
to the top of the stack. - OP
0xd1
ZeroOfType - Receives a type id of a primitive and pushes zero of that type to the top of the stack. - OP
0xd2
OneOfType - Receives a type id of a primitive and pushes one of that type to the top of the stack. - OP
0xd3
PushOut - Pushes a new output to the output stack. The following arguments are popped from the stack:out_amount = Signed128, out_address = Hash160, out_script_hash = Hash160
- OP
0xd4
PushOutVerify - Pushes a new output to the output stack and calls Verify. The following arguments are popped from the stack:out_amount = Signed128, out_address = Hash160, out_script_hash = Hash160
- OP
0xd5
PushOutIf - Pushes a new output to the output stack if the first item on the stack is equal to 1. The following arguments are popped from the stack:condition = <any_integer_type>, out_amount = Signed128, out_address = Hash160, out_script_hash = Hash160
- OP
0xd6
PushOutIfEq - Pushes a new output to the output stack if the topmost items on the stack are equal. The following arguments are popped from the stack:value1 = <any_type>, value2 = <any_type>, out_amount = Signed128, out_address = Hash160, out_script_hash = Hash160
- OP
0xd7
PushOutIfNeq - Pushes a new output to the output stack if the topmost items on the stack are not equal. The following arguments are popped from the stack:value1 = <any_type>, value2 = <any_type>, out_amount = Signed128, out_address = Hash160, out_script_hash = Hash160
- OP
0xd8
PushOutIfLt - Pushes a new output to the output stack if the topmost item on the stack is less than the second item on the stack. The following arguments are popped from the stack:value1 = <any_type>, value2 = <any_type>, out_amount = Signed128, out_address = Hash160, out_script_hash = Hash160
- OP
0xd9
PushOutIfGt - Pushes a new output to the output stack if the topmost item on the stack is greater than the second item on the stack. The following arguments are popped from the stack:value1 = <any_type>, value2 = <any_type>, out_amount = Signed128, out_address = Hash160, out_script_hash = Hash160
- OP
0xda
PushOutIfLeq - Pushes a new output to the output stack if the topmost item on the stack is less or equal than the second item on the stack. The following arguments are popped from the stack:value1 = <any_type>, value2 = <any_type>, out_amount = Signed128, out_address = Hash160, out_script_hash = Hash160
- OP
0xdb
PushOutIfGeq - Pushes a new output to the output stack if the topmost item on the stack is greater or equal than the second item on the stack. The following arguments are popped from the stack:value1 = <any_type>, value2 = <any_type>, out_amount = Signed128, out_address = Hash160, out_script_hash = Hash160
- OP
0xdc
GetSpentOutAmount - Pushes the amount of the spent output to the top of the stack - OP
0xde
GetSpentOutReceiver - Pushes the address of the receiver of the spent output to the top of the stack. Pushes0
if the output does not have a receiver address. If the output is coloured, pushes a coloured address. - OP
0xdf
GetSpentOutScriptHash - Pushes the script hash of the spent output to the top of the stack. - OP
0xe0
GetSpentOutScriptOutsLen - Pushes the number of script outs the spent output has on top of the stack. - OP
0xe1
GetSpentOutScriptOut - Pushes the script output of the spent output at the given index to the top of stack. - OP
0xe2
SpillSpentOutScriptOuts - Pushes all the script outputs of the spent output to the top of the stack. - OP
0xe3
SpentOutIsColouredOut - Pushes1
if the spent output is coloured and0
otherwise. - OP
0xe4
CurrentColourHash - Pushes the colour hash of the spent out to the top of the stack. Pushes a zero hash if the output is an XPU output. Pushes the colour hash if it is a coloured coinbase. - OP
0xe5
PushPrevScriptOuts - Pushes previous spend script outs on top of the stack up ton
- OP
0xe6
Trunc - Returns the integer part of a float/decimal. - OP
0xe7
Frac - Returns the fractionary part of a float/decimal. - OP
0xe8
GhostRider256 - Pops the topmost item on the stack, hashes it with GhostRider and then pushes the result to the stack. - OP
0xe9
Fugue256 - Pops the topmost item on the stack, hashes it with Fugue256 and then pushes the result to the stack. - OP
0xea
JH256 - Pops the topmost item on the stack, hashes it with JH256 and then pushes the result to the stack. - OP
0xeb
Blake2s256 - Pops the topmost item on the stack, hashes it with Blake2s256 and then pushes the result to the stack. - OP
0xec
Trap - Breaks script execution and returns an implicit error. - OP
0xed
Sha256 - Pops the topmost item on the stack, hashes it with Sha256 and then pushes the result to the stack. - OP
0xee
Sha512 - Pops the topmost item on the stack, hashes it with Sha512 and then pushes the result to the stack. - OP
0xef
Keccak256 - Pops the topmost item on the stack, hashes it with Keccak256 and then pushes the result to the stack. - OP
0xf0
Keccak512 - Pops the topmost item on the stack, hashes it with Keccak512 and then pushes the result to the stack. - OP
0xf1
Blake2b256 - Pops the topmost item on the stack, hashes it with Blake2b256 and then pushes the result to the stack. - OP
0xf2
Blake2b512 - Pops the topmost item on the stack, hashes it with Blake2b512 and then pushes the result to the stack. - OP
0xf3
Blake3_160 - Pops the topmost item on the stack, hashes it with Blake3_160 and then pushes the result to the stack. - OP
0xf4
Blake3_256 - Pops the topmost item on the stack, hashes it with Blake3_256 and then pushes the result to the stack. - OP
0xf5
Blake3_512 - Pops the topmost item on the stack, hashes it with Blake3_512 and then - OP
0xf6
Blake3_256_160 - Pops the topmost item on the stack, hashes it with Blake3_256, then hashes the resulting hash with Blake3_160 and then pushes the result to the stack. - OP
0xf7
Blake3_256Keyed - Pops the following from the stack:value_to_hash = <any_type>, key = Unsigned8Array
and hashes the value it with Blake3_256 keyed and then pushes the result to the stack. - OP
0xf8
Blake3_512Keyed - Pops the following from the stack:value_to_hash = <any_type>, key = Unsigned8Array
and hashes the value it with Blake3_512 keyed and then pushes the result to the stack. - OP
0xf9
Blake3_160Keyed - Pops the following from the stack:value_to_hash = <any_type>, key = Unsigned8Array
and hashes the value it with Blake3_160 keyed and then pushes the result to the stack. - OP
0xfa
Blake3_160Internal - Pops the topmost item on the stack, hashes it with Blake3_160 keyed with the current shard key, and then pushes the result to the stack. - OP
0xfb
Blake3_256Internal - Pops the topmost item on the stack, hashes it with Blake3_256 keyed with the current shard key, and then pushes the result to the stack. - OP
0xfc
Blake3_512Internal - Pops the topmost item on the stack, hashes it with Blake3_512 keyed with the current shard key, and then pushes the result to the stack. - OP
0xfd
Blake3_256_160Internal - Pops the topmost item on the stack, hashes it with Blake3_256 keyed with the current shard key, and then pushes the result to the stack. - OP
0xfe
Ripemd160 - Pops the topmost item on the stack, hashes it with Ripemd_160 and then pushes the result to the stack. - OP
0xff
Nop - Does nothing
- OP
-
Network layer
- Sector networking
- Seed nodes DNS resolution
- Header synchronization
- Peer discovery via Kademlia DHT
- Implement base header propagation
- Implement graphene propagation
- Public Bridge DHT
- Query outputs via Kademlia
- Query headers via Kademlia
- Private Bridge protocol
- Query private bridges
- Import private bridges from certificates
- Cluster mode
- Clustered block validation consensus
- AP mode
- CP mode
- Hybrid CP mode in the same datacenter but AP across datacenters
- Shard distribution on a hash ring
- Shard re-distribution on the hash ring when adding/removing nodes
- Shard simple replication
- Shard datacenter replication
- UTXO/Witness set simple replication
- UTXO/Witness set datacenter replication
- Wallet simple replication
- Wallet datacenter replication
- Clustered block validation consensus
- Asset Exchange
- Quote mempool
- Asset exchange peer discovery via Kademlia DHT
- Sector networking
-
Node
- RPC
- RPC over HTTP/JSON
- RPC over WS/JSON
- RPC over WS/Binary
- RPC over TCP/JSON
- RPC over TCP/Binary
- RPC Commands
- GetBlockchainInfo
- GetBlockHash
- GetBlockStats
- GetSectorHeight
- GetShardHeight
- GetSectorInfo
- GetShardInfo
- GetMempoolInfo
- GetRawMempoolShard
- GetRawMempool
- PreciousBlock
- PruneShard
- Generate
- GenerateToDescriptor
- GenerateToAddress
- GenerateShare
- GenerateShareToDescriptor
- GenerateShareToAddress
- SubmitBlock
- SubmitShareBlock
- GetNetworkInfo
- GetPeerInfo
- GetConnectionCount
- AddNode
- ListBanned
- SetNetworkActive
- GetNodeInfo
- Stop
- Uptime
- ValidateAddress
- SignMessage
- VerifyMessage
- VerifyAddress
- GenerateWallet
- BackupWallet
- BackupWalletS3
- SendRawTx
- QueryOutput
- Mempool
- Base Implementation
- Sharded mempool
- RPC
-
Wallet
- Hierarchical Deterministic Wallet
- Multi-Sig Hierarchical Deterministic Wallet
- Backup wallet
- Backup wallet to AWS S3
- Backup wallet to Google Cloud Storage
- Restore wallet from file
- Restore wallet from AWS S3
- Restore wallet from Google Cloud Storage
-
GUI
- Onboarding screen
- Render XPU balances
- Render XPU transaction history
- Render alternative asset balances
- Render alternative asset transaction histories
- Render wallet addresses
- Create wallet
- Import wallet
- Import wallet from encrypted private key with secure window to enter the decryption key
- Import wallet from unencrypted private key with secure window
- Import wallet from file
- Create new wallet address
- Render address as QR Code
- Send interface
- Send via QR Code
- Receive interface
- Receive via QR Code
- Multi-Sig interface
- Asset exchange interface
- Price chart
- Trading interface
- Market orders
- Limit orders