Skip to main content

Vortex API 1.0.0 documentation

Table of Contents

Channels

Channel Parameters

subscribe /rounds/:chain_hash

Peers can subscribe to this channel to receive information about coordinator rounds.

Message

Accepts one of the following messages:

Message roundParameters

Details of the round

Payload
NameTypeDescriptionAccepted values
version integer 0
roundId string

The ID of the round

Any
amount integer

The amount of the target utxo

Any
coordinatorFee integer

The fee the coordinator takes per new entrant

Any
publicKey string

The public key of the coordinator

Any
time integer

The time the round begins

Any
inputType string

The type of input that must be registered

witness_v0_keyhash, witness_v0_scripthash, witness_v1_taproot
outputType string

The type of output that must be registered

witness_v0_keyhash, witness_v0_scripthash, witness_v1_taproot
changeType string

The type of change output that must be registered

witness_v0_keyhash, witness_v0_scripthash, witness_v1_taproot
minPeers integer

The minimum number of peers that must register

Any
maxPeers integer

The maximum number of peers that can register

Any
status string

The status of the round

Any
title string

The title of the round

Any
feeRate integer

The expected fee rate of the round in sats/vbyte

Any
Examples of payload
{
"version": 0,
"roundId": "030756a3dbf5eea34295337a73368905cc60321e9e47cdad6e091e26d311f4ac",
"amount": 40000,
"coordinatorFee": 1000,
"publicKey": "03b9cbebc3e2a1d4b8b2e5f2fbaa1e2d1f3e4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c",
"time": 1619222400,
"inputType": "witness_v0_keyhash",
"outputType": "witness_v1_taproot",
"changeType": "witness_v0_keyhash",
"minPeers": 2,
"maxPeers": 10,
"status": "Example Status",
"title": "Example Title",
"feeRate": 2
}
Message feeRateHint

A new fee rate hint for the round

Payload
NameTypeDescriptionAccepted values
feeRate integer

The new expected fee rate of the round in sats/vbyte

Any
Examples of payload
{
"feeRate": 2
}

Channel Parameters

publish /register/:round_id

Message sent by peers to register for round.

Message

Accepts one of the following messages:

Message registerInputs

The inputs the peer wants to register

Payload
NameTypeDescriptionAccepted values
inputs array(object)

Array of inputs to register

Any
inputs.inputProof string

The proof that the input is owned by the peer

Any
inputs.outputReference object Any
inputs.outputReference.outPoint object Any
inputs.outputReference.outPoint.txId string

The transaction ID of the output

Any
inputs.outputReference.outPoint.vout integer

The index of the output

Any
inputs.outputReference.output object Any
inputs.outputReference.output.value integer

The value of the output

Any
inputs.outputReference.output.scriptPubKey string

The scriptPubKey of the output

Any
blindedOutput string

The blinded output of the peer

Any
changeSpkOpt string

Optional, the scriptPubKey of the change output

Any
Examples of payload
{
"inputs": [
{
"inputProof": "304402204d00239127580f515b4f0b00585525546b248d95e7eb35aef4da525658f901f402206a37d04aa970af1f9999a58ac10bebfc22c578110791b56c68ffc4de08ecbc63010279a147dc244c1747356c65c5c8f5c0d429dfac936ab2c83d819fc53fed634bb7",
"outputReference": {
"outPoint": {
"txId": "030756a3dbf5eea34295337a73368905cc60321e9e47cdad6e091e26d311f4ac",
"vout": 0
},
"output": {
"value": 40000,
"scriptPubKey": "0014b9cbebc3e2a1d4b8b2e5f2fbaa1e2d1f3e4a5b6c7"
}
}
}
],
"blindedOutput": "02b9cbebc3e2a1d4b8b2e5f2fbaa1e2d1f3e4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c",
"changeSpkOpt": "0014b9cbebc3e2a1d4b8b2e5f2fbaa1e2d1f3e4a5b6c7"
}
Message signedPsbt

PSBT signed by the peer

Payload
NameTypeDescriptionAccepted values
signedPsbt string

PSBT signed by the peer

Any
Examples of payload
{
"signedPsbt": "cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAABBEdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSriIGApWDvzmuCmCXR60Zmt3WNPphCFWdbFzTm0whg/GrluB/ENkMak8AAACAAAAAgAAAAIAiBgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU21xDZDGpPAAAAgAAAAIABAACAAAEBIADC6wsAAAAAF6kUt/X69A49QKWkWbHbNTXyty+pIeiHAQQiACCMI1MXN0O1ld+0oHtyuo5C43l9p06H/n2ddJfjsgKJAwEFR1IhAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcIQI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc1KuIgYCOt2QTz1tz1nduQaw3uI1Kbf/ue1Q5ehhUZJoYCIfDnMQ2QxqTwAAAIAAAACAAwAAgCIGAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcENkMak8AAACAAAAAgAIAAIAAIgIDqaTDf1mW06ol26xrVwrwZQOUSSlCRgs1R1Ptnuylh3EQ2QxqTwAAAIAAAACABAAAgAAiAgJ/Y5l1fS7/VaE2rQLGhLGDi2VW5fG2s0KCqUtrUAUQlhDZDGpPAAAAgAAAAIAFAACAAA=="
}
Message cancelRegistration

Indicates that the peer wants to cancel registration for the round

Payload
NameTypeDescriptionAccepted values
nonce string

Received nonce from the coordinator

Any
roundId string

The ID of the round

Any
Examples of payload
{
"nonce": "08469f5f8161f406a133a679d247afb71ecce631f91b997ed826751389879550",
"roundId": "030756a3dbf5eea34295337a73368905cc60321e9e47cdad6e091e26d311f4ac"
}

subscribe /register/:round_id

Messages received during the coordinator round.

Message

Accepts one of the following messages:

Message nonceMessage

The nonce message sent by the coordinator

Payload
NameTypeDescriptionAccepted values
schnorrNonce string

The schnorr nonce of the peer used for blind signing

Any
Examples of payload
{
"schnorrNonce": "08469f5f8161f406a133a679d247afb71ecce631f91b997ed826751389879550"
}
Message askInputs

The coordinator asking peers to register inputs

Payload
NameTypeDescriptionAccepted values
roundId string

The ID of the round

Any
inputFee integer

The fee the peer has to pay for each input

Any
outputFee integer

The fee the peer has to pay for each output

Any
changeOutputFee integer

The fee the peer has to pay for each change output

Any
Examples of payload
{
"roundId": "030756a3dbf5eea34295337a73368905cc60321e9e47cdad6e091e26d311f4ac",
"inputFee": 1000,
"outputFee": 1000,
"changeOutputFee": 1000
}
Message blindedSignature

The blind signature from the coordinator

Payload
NameTypeDescriptionAccepted values
blindOutputSig string

The blind signature from the coordinator

Any
Examples of payload
{
"blindOutputSig": "4006D4D069F3B51E968762FF8074153E278E5BCD221AABE0743CA001B77E79F581863CCED9B25C6E7A0FED8EB6F393CD65CD7306D385DCF85CC6567DAA4E041B"
}
Message unsignedPsbt

PSBT of the transaction to sign

Payload
NameTypeDescriptionAccepted values
psbt string

PSBT of the transaction to sign

Any
Examples of payload
{
"psbt": "cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAABBEdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSriIGApWDvzmuCmCXR60Zmt3WNPphCFWdbFzTm0whg/GrluB/ENkMak8AAACAAAAAgAAAAIAiBgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU21xDZDGpPAAAAgAAAAIABAACAAAEBIADC6wsAAAAAF6kUt/X69A49QKWkWbHbNTXyty+pIeiHAQQiACCMI1MXN0O1ld+0oHtyuo5C43l9p06H/n2ddJfjsgKJAwEFR1IhAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcIQI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc1KuIgYCOt2QTz1tz1nduQaw3uI1Kbf/ue1Q5ehhUZJoYCIfDnMQ2QxqTwAAAIAAAACAAwAAgCIGAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcENkMak8AAACAAAAAgAIAAIAAIgIDqaTDf1mW06ol26xrVwrwZQOUSSlCRgs1R1Ptnuylh3EQ2QxqTwAAAIAAAACABAAAgAAiAgJ/Y5l1fS7/VaE2rQLGhLGDi2VW5fG2s0KCqUtrUAUQlhDZDGpPAAAAgAAAAIAFAACAAA=="
}
Message signedTransaction

Fully constructed signed transaction

Payload
NameTypeDescriptionAccepted values
transaction string

Fully constructed signed transaction

Any
Examples of payload
{
"transaction": "0200000000010258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd7500000000da00473044022074018ad4180097b873323c0015720b3684cc8123891048e7dbcd9b55ad679c99022073d369b740e3eb53dcefa33823c8070514ca55a7dd9544f157c167913261118c01483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752aeffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d01000000232200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f000400473044022062eb7a556107a7c73f45ac4ab5a1dddf6f7075fb1275969a7f383efff784bcb202200c05dbb7470dbf2f08557dd356c7325c1ed30913e996cd3840945db12228da5f01473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d20147522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae00000000"
}
Message restartRound

Indicates that the round should be restarted, new round params and nonce are provided so peer can register inputs

Payload
NameTypeDescriptionAccepted values
roundParameters object Any
roundParameters.version integer 0
roundParameters.roundId string

The ID of the round

Any
roundParameters.amount integer

The amount of the target utxo

Any
roundParameters.coordinatorFee integer

The fee the coordinator takes per new entrant

Any
roundParameters.publicKey string

The public key of the coordinator

Any
roundParameters.time integer

The time the round begins

Any
roundParameters.inputType string

The type of input that must be registered

witness_v0_keyhash, witness_v0_scripthash, witness_v1_taproot
roundParameters.outputType string

The type of output that must be registered

witness_v0_keyhash, witness_v0_scripthash, witness_v1_taproot
roundParameters.changeType string

The type of change output that must be registered

witness_v0_keyhash, witness_v0_scripthash, witness_v1_taproot
roundParameters.minPeers integer

The minimum number of peers that must register

Any
roundParameters.maxPeers integer

The maximum number of peers that can register

Any
roundParameters.status string

The status of the round

Any
roundParameters.title string

The title of the round

Any
roundParameters.feeRate integer

The expected fee rate of the round in sats/vbyte

Any
nonceMessage object Any
nonceMessage.schnorrNonce string

The schnorr nonce of the peer used for blind signing

Any
Examples of payload
{
"roundParams": {
"version": 0,
"roundId": "030756a3dbf5eea34295337a73368905cc60321e9e47cdad6e091e26d311f4ac",
"amount": 40000,
"coordinatorFee": 1000,
"publicKey": "03b9cbebc3e2a1d4b8b2e5f2fbaa1e2d1f3e4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c",
"time": 1619222400,
"inputType": "witness_v0_keyhash",
"outputType": "witness_v1_taproot",
"changeType": "witness_v0_keyhash",
"minPeers": 2,
"maxPeers": 10,
"status": "Example Status",
"title": "Example Title",
"feeRate": 2
},
"nonceMessage": {
"schnorrNonce": "08469f5f8161f406a133a679d247afb71ecce631f91b997ed826751389879550"
}
}