Releases: rubixchain/rubixgoplatform
v0.0.20
Release Notes
Wallet: A new endpoint has been added,/api/request-did-for-pubkeyfor getting the DID for an input public key.Core: Fixed RBT transfer for certain transactions values by optimizing the quorum selection logicCore: Nodes running pre - v0.0.17 will fail to verify quorum signature since they don't have the provision for checking thedidTypewhich was introduced inv0.0.17. To maintain compatibility, a fix has been introduced that identifies if the quorums belong to pre-v0.0.17 and if so, they are assumed to be ofdidTypeas 0 (which is NLSS signature scheme)
Changelog
* b093d4a API is only tested with RBT transfers
* 50010b0 API to create DID for a given public key
* 333586b APIKey expire,create and other APIs
* 0a87f2b Add nft value and nft data to deploy-nft
* 585d381 Add nftdata to nft genesis block
* d5b8e10 Add passing of address in InitConfig
* c7aabf1 Add quorum count checking with Remaining pledge tokens check
* e234e14 Added functionality for faucet quorums
* e60b638 Added token details struct for explorer
* 4c391fa Adding token check for faucet token
* 8ac7402 Delete kubo_v0.21.0_linux-amd64.tar.gz
* d9a8494 Explorer structure updated for transaction & part token create
* 276d10d Fixing typo
* 3f7eea1 Issue fix
* 97ca3f8 Merge branch 'arnab/fix-nft-transfer-between-different-nodes' into maneesha/bip-wallet
* 19ac578 Merge branch 'ashita/NewExplorerStructure' into maneesha/wallet-cum-explorer
* 3d09136 Merge branch 'ashita/testNetFaucet' into maneesha/wallet-cum-explorer
* a98d4f8 Merge branch 'development' into ashita/Fix/Explorer-url
* f05585f Merge branch 'development' into ashita/NewExplorerStructure
* 4bed60a Merge branch 'development' into ashita/NewExplorerStructure
* a66dd29 Merge branch 'development' into ashita/NewExplorerStructure
* 3ad9945 Merge branch 'development' into ashita/NewExplorerStructure
* f014e9e Merge branch 'development' into ashita/NewExplorerStructure
* fb88c2f Merge branch 'development' into ashita/testNetFaucet
* 2659f10 Merge branch 'development' into ashita/testNetFaucet
* 739ff09 Merge branch 'development' into ashita/testNetFaucet
* 3894b81 Merge branch 'development' into ashita/testNetFaucet
* 76dd84d Merge branch 'development' into maneesha/bip-wallet
* 36f9899 Merge branch 'development' into maneesha/bip-wallet
* b401b81 Merge branch 'development' into maneesha/resolve-node-upgradation-issue
* c50d64f Merge branch 'development' into maneesha/resolve-node-upgradation-issue
* ca80fab Merge branch 'development' into maneesha/wallet-cum-explorer
* a1a6270 Merge branch 'development' of https://github.com/rubixchain/rubixgoplatform into vaishnav/fix/TransferFailingForFewValues
* 82669fc Merge pull request #194 from rubixchain/ashita/testNetFaucet
* 5bd3e5d Merge pull request #219 from rubixchain/ashita/Fix/Explorer-url | Explorer URL Fix
* 36a5b32 Merge pull request #221 from rubixchain/maneesha/resolve-node-upgradation-issue
* 2251dab Merge pull request #233 from rubixchain/ashita/NewExplorerStructure
* aadb35d Merge pull request #255 from rubixchain/vaishnav/fix/userDefinedAddress
* bc86757 Merge pull request #278 from rubixchain/gklps/TC-sync-issue-resolution
* a211f24 Merge pull request #280 from rubixchain/sai/adding-epoch-get-scdata
* 1049eab Merge pull request #285 from rubixchain/ashita/fix/explorerValues
* de07906 Merge pull request #286 from rubixchain/ashita/fix/explorerValues
* aa3a0a2 Merge pull request #289 from rubixchain/maneesha/wallet-signature
* 8aa810e Merge pull request #290 from rubixchain/maneesha/wallet-signature
* 6e190c9 Merge pull request #296 from rubixchain/fix/allen/add-nft-value
* 193cc42 Merge pull request #300 from rubixchain/maneesha/wallet-cum-explorer
* dae0701 Merge pull request #301 from rubixchain/vaishnav/fix/TransferFailingForFewValues
* 7815b60 Merge pull request #302 from rubixchain/maneesha/TransactionEpochFix
* fc0c180 Merge pull request #303 from rubixchain/development
* 6e71ea9 Merge pull request #304 from rubixchain/arnab/bump-version-to-v0020
* 80f6ded Remove kubo file from the commit
* fcd4f12 Solving token chain sync issue by updating minor check logic
* 9b506ef Token state hash update for older nodes
* 0ff4560 Tokenchain sync issue fix
* a89533f Update pledge status
* 1d79dcc Updated FT and NFT explorer structure
* 7977d50 Updated URL and explorer fuctions
* 12f1fd5 Updated faucet token validation
* 4f6a87f Updated fiend names
* 7f442f7 Updating token structure
* e36a294 Updating version
* 3919741 Usercreate,tokencreate,rbt/sc trancaction
* 90fcff6 added didrequest api and sign request
* 374e229 added swagger for APICreateDIDFromPubKey
* 3634394 added token count as column
* 0f9600f added wallet signature for lite quorum
* 10ddb67 adding DID (created-from-pubkey) to explorer
* dbd6fe0 adding case when quorum and sender are on same server
* 961bcd4 adding epoch to get smart contract data api response
* 2bf10dd adding params for rbt transfer
* 34942e0 adding token and token chain check
* ce96ed6 authenticating wallet JWT and proceeding for RBT transfer
* 693947e bump version number to v0.0.20
* baecdd7 changing the epoch type to uint64
* 46e6258 compatibility of function GetQuorumSignatureList with old tokens
* 53666db converting GET request to POST request
* 6341fce creating new generate function for Faucet
* c654527 explorer spelling and function optimisation
* 97cd8c3 fixing transaction issue with specific values
* 7bc2a28 minor change
* a2f0254 optimizing
* 21c0ebc passing quorum DID
* 2233d13 reciving signature from wallet through channel
* 8f6048a removing unneccessary logs
* d28c3c7 resolving merge
* d71c784 return DID for existing public key
* d686ae4 sender fetching prev pledged quorums info from prev sender
* e561194 supporting peerID.DID address format for RBT transfers
* 01928c8 updated Structure and URL
* 00554a0 updated details
* fd6e983 updated explorer_url table
* 9131911 updated for FT
* 81fd060 updated name
* 817f3b6 updated name to default setup
* 5c00aaf updated url and faucet token name
* 1294b9d updatewallet server port
* 85fb0f1 updating APICreateDIDFromPubKey method
* fac97b8 updating checkWholeToken for faucet Tokens
* 52bc72c updating create RAC and tokenID
* 058f066 updating delete table
* 6dc9c64 updating error handling
* 22ef85e updating explorer values and func
* 3801395 updating receiver Epoch incase its 0
* 6dddf8a updating response messages
* 7dd6f78 updating return values
* d5db36a updating tokennumber and level in db
* 9bd1f9a variable name updatev0.0.19
Release Notes
We, at Rubix, are delighted to share this release with the introduction of two new Native Assets!
Fungible Tokens
Fungible Tokens (FT) are secondary tokens on Rubix which unlocks opportunities to implement various use-cases including community-driven projects, Real-World Asset Tokenization and Decentralized AI to name a few.
FTs can be thought of as individual units, similar to the conception of RBT. The foundation of these tokens stems from RBT. For creation of FT, one needs to lock a certain number of RBT tokens. The locking process of RBT is irreversible. For instance, if 1 RBT is locked in favor of minting 100 FT units, then each FT unit will have a value of 0.01 RBT. In this way, these FTs are governed by the security and economic layer of RBTs.
To know more about Fungible Tokens, refer the docs here
Non-Fungible Tokens
Non-Fungible Tokens are introduced as Native Assets in Rubix which represents an underlying asset. They could be Real World Assets (RWA), Unique Access Tokens, Digital Collectibles, etc. These are properties which have an ownership aspect, along with other paradigms like regulatory restrictions, time-based usage, etc. Rubix offers the flexibility to make any file or archive as a native NFT.
Interaction with NFT on Rubix is free. The minting of NFT involves a pledge of 1 RBT from Quorums, while in case of NFT Ownership transfer, the pledge value depends on the Sale value of the NFT.
To know more about Non Fungible Tokens, refer the docs here
Changelog
- 155f54c Add Error handling for
updateFTTable() - 57d164a Add TODO comment
- 2c43e2a Add api : list-nfts-by-did
- d5688f1 Add api: /api/fetch-nft and command : fetch-nft
- b84225f Add api: /api/get-nfts-by-did and command get-nfts-by-did
- 38e4866 Add auto-subscription of smartcontract while deploying
- 4fb5eb9 Add command execute and deploy nft
- 5d79812 Add error handling for
updateFTTable() - 1dee387 Add functions and variables for implementation of FT
- 759b365 Add functions for FT consensus
- e5a12b0 Add input param validation of FT functions
- 3141578 Add new key, nftData
- 5892e48 Add nft basic structure [WIP: Breaking]
- 6882df1 Add nft deployment and execution
- 6a07e65 Add nftdata key in decode token chain
- 78ffc65 Add swagger and minor fixes
- 22b7d57 Adding TC dump decoder
- 458779c Adding the testnet bootstrap to configurations
- bbefd50 Adding tokenchain decoder for tokenchain dump
- 7b68a42 Change api list-nfts-by-did to list-nfts
- 3b5218c Change execute-nft -> transfer-nft
- 70957bf Change in createFT input param error handling
- bafd2af Code cleanup
- 23c47b9 Expanding TC decoder to SmartContracts
- a5178e7 Fix : Did not checked while creating smart contract token
- ed17072 Fix : Error message not returned properly
- 7a1f1fc Fix : did not updated in NFTTable if subsrcibed before deploying nft
- a7fe2f8 Fix : nft file name not proper while executing
- fb67218 Fix typo
- bb4028e Fix: Generate Smart Contract command giving smart contract token hash in response
- 905a11a Fix: Receiver NFTTable updation issue
- 98dfe5a Fix: Smart contract token hash not returned
- 1aed3ea Fix: block-key mismatch
- a038f2a Fix: nft hash not returned
- dee1fd3 Fix: nft owner not updated
- 912f549 Handle error and a minor fix
- c277e9f Merge branch 'development' into arnab/fix-transfer-between-self-dids
- b9a7f22 Merge branch 'development' into maneesha/fp-flag-error-handling
- e99edcc Merge branch 'development' into maneesha/tokenchain-validation
- 4262d5c Merge branch 'development' into maneesha/tokenchain-validation
- e798791 Merge branch 'development' of https://github.com/rubixchain/rubixgoplatform into arnab/fix-transfer-between-self-dids
- ed25656 Merge branch 'development' of https://github.com/rubixchain/rubixgoplatform into arnab/fix-transfer-between-self-dids
- b2f3b0f Merge branch 'development' of https://github.com/rubixchain/rubixgoplatform into gklps/tokenchaindumpdecoder
- 1b08731 Merge branch 'development' of https://github.com/rubixchain/rubixgoplatform into maneesha/tokenchain-validation
- 10e8a15 Merge branch 'development' of https://github.com/rubixchain/rubixgoplatform into maneesha/tokenchain-validation
- a7b7130 Merge branch 'vaishnav/feature/ft' into development
- ceb6594 Merge pull request #185 from rubixchain/maneesha/tokenchain-validation
- 90ab0ca Merge pull request #190 from rubixchain/gklps/tokenchaindumpdecoder
- 9c568f0 Merge pull request #207 from rubixchain/arnab/fix-transfer-between-self-dids
- 748c256 Merge pull request #210 from rubixchain/gklps/tokenVerificationEnh
- 396fa2e Merge pull request #212 from rubixchain/maneesha/fp-flag-error-handling
- 9b99373 Merge pull request #213 from rubixchain/maneesha/maintain-GoStandard-CamelCase
- 90be7e7 Merge pull request #215 from rubixchain/hari/remove-pwd-from-bipseed
- 664957f Merge pull request #224 from rubixchain/hari/mnemonic-filepath-handler
- 96c6ed1 Merge pull request #226 from rubixchain/fix/allen/smartcontract
- 20f40e3 Merge pull request #229 from rubixchain/feature/allen/nft
- 7603639 Merge pull request #232 from rubixchain/sai/update-swagger-params
- 737614d Merge pull request #235 from rubixchain/arnab/fix/add-missing-code-block
- bb2471b Merge pull request #236 from rubixchain/sai/resoving-fetchsmartcontract-api-error
- e8d0bbe Merge pull request #239 from rubixchain/arnab/nft-self-exec-fix
- 5a27785 Merge pull request #241 from rubixchain/fix/allen/nft
- 8544ae1 Merge pull request #246 from rubixchain/fix/allen/get-nft-list
- 98246d5 Merge pull request #254 from rubixchain/fix/allen/auto-subscribe-sc
- eb28f85 Merge pull request #256 from rubixchain/ashi/TestNetBootstrapUpdate
- 3edb68e Merge pull request #258 from rubixchain/allen/fix/add-new-nft-apis
- 1cd5307 Merge pull request #260 from rubixchain/feature/allen/nft-command-update
- cdb635d Merge pull request #269 from rubixchain/ashi/TestSwarmKey_add
- 50c1916 Merge pull request #272 from rubixchain/arnab/fix-nft-transfer-between-different-nodes
- 39ead92 Merge pull request #273 from rubixchain/arnab/fix-same-peer-did-ft-transfer
- ccddf80 Merge pull request #274 from rubixchain/arnab/bump-version-number
- f97220b Merge pull request #275 from rubixchain/development
- 3b98b29 Merge remote-tracking branch 'origin/development' into vaishnav/feature/ft
- f3d0b0f NLSSshare as NLSSShare
- 385b1dc Refactor : createNFT
- 7c79291 Refactor nft file in ipfs & Fix db update
- f82aaf5 Refactor: transfer-nft -> execute-nft
- 7a0aa0a Remove comments
- fb27451 Remove peerID.DID formatting
- a77810d Remove unwanted debug logs
- b064918 Remove unwanted log and print statements
- 9d164a5 Rename get-nft-token-chain -> dump-nft-token-chain
- 9b758f3 This commit will enable decode tokenchain
- a13acf6 Token Verification Client Enhancements
- 39a8aef Update FT consensus
- f5278e2 Update command description for NFT
- 5ec02cc Update in FT consensus
- 87027be Update in FT params and fix typo-errors
- 71672f4 Update in FT tokenchain.
- a14b5ed Update in commad help
- 6214a93 Update in createFT error handling
- f8d0ede Update in createFT input param type
- 10fa008 Update in tokenstate hash updating functions
- 9739751 [skip actions] fixed comment
- 5dda916 added 'epoch' in keyMapping
- 7b4598f added check to skip FT transfer update SQL DB if both Sender and Receiver belong to the same node
- cd71db6 added test cases for with & without fp flag
- 5ffd9dd added validation for trans types: pledged, unpledged and contract committed
- 17f0e77 bugfix: fixed self execution flow for NFT where the NFT value is fetched from NFTTable
- 3f76df5 bumped version from 0.0.18 to 0.0.19
- 6374cc5 changing snake_case to camelCase
- 4f53fde code changes to resolve the fetch smartcontract API error.
- 9a30601 committing changes according to the suggestions in the review
- 162fba1 correcting invalid parameters of the register call back URL API's swagger doc.
- 8ef31b2 exit if mnemonic file not found
- 4ca68d3 fix: added a condition which checks the DIDTable to see if the receiver DID is local to sender DID's peer
- 9a4d4d4 fix: re-added block to notify previous quorums to remove trans tokens from TokenStateHash table that have their token state exhausted
- b829226 fixed multi-node NFT transfer scenario where the NFTTable on the receiver's end was not updated with correct DID and NFTValue inputs; added the NFT subscription function under NFT Deploy function where the Deployers will subscribe to NFT by default
- 73a2174 fixed FTTokensTransffered function by including a param which indicates whether the Receiver and Sender are same
- a80e65d fixed did info in addpeerdetails command
- 8203fe4 fixed receiver peerID assignment
- 79719dc fixed swagger description for NFT APIs; fixed updates to NFTTokensTable
- 369c383 fixed transfer of RBT tokens between DIDs that are present on the same node by adding a validation rule to check for receiver's DID in DIDTable following the DIDPeerTable check
- f15c8f0 fixed transfer of rbt between DIDs when either is present on a Quorum node
- e22f2a3 handling errors and unnecessary flags
- 0069c85 handling quorum password in setupquorum for lite mode did
- d361159 handling setupquorum in lite mode
- 7593733 handling validation of synced tokenchains
- d0b1960 improvement: did_type associates with did
- 2ef7db3 improving error handling
- cfbbf3c optimized tests for fp flag
- 2e8006e python test script added for force-passwords
- d514172 readme update
- cbeec76 refactor: handled missing errors; fixed the return of UpdateTokenStateHash API by passing an empty struct
- b8dc9d3 remove -privPWD from bip seed creation
- 43725d9 removing extra debug statements
- beaaa7f removing recurring validations and updating smart contract validations
- ...
v0.0.18
Release Notes
Periodic Pledging
In this release, we have replaced the current pseudo Proof-of-Work based unpledging with Periodic Pledging. This feature will provide a better tokenomics for pledge validators allowing them to quantify the expected returns with respect both time and space factors.
Time based Pledging
For each transaction, Quorums pledge tokens for a period of 7 days. After this period, the Quorums can unpledge their tokens via the CLI/API. Upon successfully pledging for 7 days, the Quorums earn a credit. If the transaction tokens experience a state change before 7 days, the pledged tokens become eligible for unpledging, and the credits earned are proportional to the number of days the tokens were pledged.
CLI:
./rubixgoplatform run-unpledge -port <server node port>
API:
POST: /api/run-unpledge
Params: No params
While transferring tokens, the sender informs the previous quorums to unpledge the previous token state, since the new quorums who are validating the current transactions, are going to Pin this state. The previous quorums, upon receiving this message from sender, proceed the remove the related records from TokenStateHash table.
Whenever the unpledge process is executed, we loop through the UnpledgeSequence table and for each transaction, we check if the records (associated with the transaction id) are present in the TokenStateHash table. If yes, then we proceed to unpledge tokens. If no, then we skip it.
Quorums can use the following commands to check all pledge tokens and their respective TokenStates that they have pledged for, as well as, check if a particular token state is exhausted or not.
Query Pledge Token States:
CLI:
./rubixgoplatform getpledgedtokendetails -port <server node port>
API:
GET: /api/get-pledgetoken-details
Params: No params
Check if Token State is Pinned:
CLI:
./rubixgoplatform checkpinnedstate -tokenstatehash <Token State Hash> -port <server node port>
API:
DELETE: /api/check-pinned-state
Query Params:
- tokenstatehash: Token State Hash
Self Transfer
To ensure continuous pledging for transaction tokens and the pinning of their token states after the 7-day pledge period, we have introduced the concept of Self Transfer. This is a pseudo state change where the sender and receiver are the same. Since it is treated as a transaction by the protocol, Quorums proceed to pledge and pin the previous state of the transaction tokens. This is an externally triggered process.
The CLI and API structure is similar to a general RBT token transfer, except that only the sender's DID and transaction type need to be provided.
CLI:
./rubixgoplatform self-transfer-rbt -senderAddr <sender DID> -transType <transaction type> -port <node server port>
API:
POST: /api/initiate-self-transfer
Request Body:
{
"sender": "<sender DID>",
"type": "<transaction type>"
}
NOTE: Similar to the RBT Transfer API (/api/initiate-rbt-transfer), you need to call the Signature Response API (/api/signature-response) after calling the Self Transfer API
Unpledging of PoW-based pledge tokens
Since we are moving away from psuedo PoW-based pledging from this version, we have introduced a CLI/API to unpledge those tokens which were pledged as part of PoW-based pledging. This CLI/API loops through all tokens present in unpledgequeue table (if present) and unpledges them by adding an unpledge block to the tokenchain and changing their status in TokensTable to Free, following which the unpledgequeue table is dropped. Henceforth, information about new pledge tokens are reflected in the new UnpledgeSequence table.
CLI:
./rubixgoplatform unpledge-pow-pledge-tokens -port <node server port>
API:
POST: /api/unpledge-pow-unpledge-tokens
Params: No params
Account Recovery
We have introduced the following features which come together to facilitate Account Recovery
Importing BIP-39 based DIDs through Mnemonic
When a DID is created using the BIP-39 mode, the mnemonic is usually stored in the respective DID's directory as a .txt file. Users can take backup this mnemonic, and at any point of time can regenerate/import the DID using the same mnemonic string.
Inorder to recover DID and key pairs, backup the mnemonickeyfile in a seperate folder and call createdid with -didType 4 -mnemonicKeyFile /pathtomnemonickeyfile. This will create the same master key and key pairs.
./rubixgoplatform createdid -didType 4 -mnemonicKeyFile mnemonic.txt
Pinning Service
The pinning service enables token owners to pin their tokens on a pinning node on their behalf. The token's ownership remains unchanged; however, the pinning node will have all the information about the pinned token and its token chain. This is an important step towards protocol adoption in Lite nodes (Mobile , IoT like devices that doesnt either remain online all the time or have storage constraints). The pinning service also brings an oppotunity for our community to build a delegated Proof-of-Pledge algorithm , where even Lite nodes can earn partial credits.
For Pinning Token on User's Behalf:
CLI:
./rubixgoplatform pinToken -senderAddr <sender DID> -pinningAddress <Pinning DID> -transComment <comment> -transType <transaction type> -port <node server port>
API:
POST: /api/initiate-pin-token
Request Body:
{
"pinningNode":"<Pinning DID>",
"sender":"<Sender DID>",
"comment":"<Comment>",
"type": <Transaction Type>,
"password":"<Password>"
}
For Token Recovery:
CLI:
./rubixgoplatform recoverToken -senderAddr <Sender DID> -pinningAddress <Pinning DID> -port <node server port>
API:
POST: /api/recover-token
Request Body:
{
"pinningNode": "<Pinning DID>",
"sender":"<Sender DID>"
}
Manual Peer detail registeration and Address format change
To transfer a token to a receiver, the sender must now manually add the receiver and type 2 quorum details by providing the PeerID, DID, and DIDType. This can be done either through a direct API call or via the CLI. Manually adding these details ensures that only the required peers are included, as opposed to populating the database with all peers in the network, which was previously done through RegisterDID. The addition of peer details should be performed when a node is connecting to the peer node for the first time..
CLI:
$ ./rubixgoplatform addpeerdetails -port 20006
Enter PeerID : 12D3KooWQ2as3FNtvL1MKTeo7XAuBZxSv8QqobxX4AmURxyNe5mX
Enter DID : bafybmicro2m4kove5vsetej63xq4csobtlzchb2c34lp6dnakzkwtq2mmy
Enter DID Type : 4
2024-05-22T16:41:02.681+0530 [INFO] Main: Peer added successfully
$ ./rubixgoplatform addpeerdetails -port 20006 -peerID 12D3KooWQ2as3FNtvL1MKTeo7XAuBZxSv8QqobxX4AmURxyNe5mX -did bafybmicro2m4kove5vsetej63xq4csobtlzchb2c34lp6dnakzkwtq2mmy -didType 4
API:
POST: /api/add-peer-details
Request Body:
{
"peerid": "12D3KooWJUJz2ipK78LAiwhc1QUVDvSMjZNBHt4vSAeVAq6FsneA",
"did": "bafybmics43ef7ldgrogzurh7vukormpgscq4um44bss6mfuopsbjorbyaq",
"didtype": 0
}
There has been change in address format from PeerID.DID to DID.
When a node, say Alice, connects to another node, Bob, to check Bob's peer status (using the getPeer function) or to fetch Bob's DIDType for token ownership validation (using the GetPeerdidType_fromPeer function), Alice will now share her details (PeerID, DID, and DIDType) through the same API used for fetching Bob's status or DIDType. Bob will register or update Alice's details in the SQLite database in the DIDPeerTable if they are not already registered or need updating. This improvement will streamline peer connections and reduce the extra work of manually registering peers.
Distributed Pledging
During a transfer, the pledged amount from each quorum varies based on the availability of tokens within that quorum. To ensure equal participation, the total pledge amount is divided equally among all quorums, resulting in the same pledge amount for each. If the division of the pledge amount by the number of quorums results in a value with more decimal points than allowed, the value is rounded up to the maximum permitted decimal places. For instance, a pledge value of 0.1234 would be rounded to 0.124.
Adding Initiator Signature to block structure
An initiator is the one who is initiating the transaction, in case of RBT transfer it is the sender, in case of smart contract deploy it is the deployer and in case of smart contract execution it is the executor. This feature will include any initiator's signature in the corresponding block. Here we are adding Initiator Signature to the token chain block where the details include the following fields:
NLSS_share: sender's NLSS private sharePrivate_sign: sender's signature using private key (BIP sign in case the sign version is 0)DID: sender didHash: signing dataSignVersion: 0, if signed using BIP signing scheme, and 1, if signed using NLSS signing scheme
The numeral key assigned to the Initiator Signature field is "12". Shown below are the structures of an Initiator Signature in a block in a dumped token chain in different scenarios.
RBT Transfer:
Basic mode sender did with NLSS signature:
"12": {
"priv_signature": "3045022100a90a64b973b8e554e4a5ac2f5871e61a83a4d6b5e5bae426ba67d4d9225df1bf0220555082162a26d09bd9ff577848ebae7e1e5c2fe03e39958db0bc7360d2d54fb9",
"nlss_share_signature": "2d03e9391693e33ac2069393aca7d1bfbe94ac0c360e36afa60e7b3ea4e3bf6f",
"hash": "65d59f427887858a493604d4df8b601cef1ee33c20e361828f22b94c3bc8ff97",
"sign_type": 1,
"initiator_did": "bafybmifvz3lez6...v0.0.17
Release Notes
Support for BIP-39 Specification for DID Creation
Support for creating DIDs using BIP-39 specification has been added. Creation of DID is much quicker compared to NLSS scheme, as the cryptographic keys are generated using a 24-word mnemonic, while the time complexity for later is O(n3). The use of mnemonic also makes account recovery possible.
Following is the command to create a DID using the BIP-39 specification:
./rubixgoplatform createdid -didType 4
7-Quorum Node Transaction fail Fix
It was observed that, in a 7 quorum nodes setup, if the pledging node happens to delay the submission of its signature, the consensus would proceed with other 5 quorums nodes, resulting in the failure of the transaction. A fix has been administered to ensure that Pledging quorum's signature is included in the Singature set.
Test Framework
A set of test scripts written in Python, have been added for testing scenarios related to RBT transfers. A Github workflow is added which runs these tests in Linux, Windows and MacOS environments, once a PR is raised to development or main branch
Changelog
- 59913ce 7 quorums fix
- 31e07b6 Adding readme and updated printing format
- 6060d25 BIP keys encoded and sign check
- aa16317 BIP sign version updated
- 47c4b45 Create LICENSE
- 1a77d68 Created Light mode for PKI based signature
- 0da1640 Merge branch 'development' into ashita/7quorumsFix
- f3d48cd Merge branch 'development' into ashita/7quorumsFix
- d080334 Merge branch 'development' into hari/bip39-integration
- 7d7c550 Merge branch 'development' into hari/bip39-integration
- 3806ae6 Merge branch 'development' of https://github.com/rubixchain/rubixgoplatform into arnab/tests
- af86f55 Merge branch 'development' of https://github.com/rubixchain/rubixgoplatform into arnab/tests
- f6a06a2 Merge branch 'development' of https://github.com/rubixchain/rubixgoplatform into ashita/7quorumsFix
- 8d4cc49 Merge branch 'hari/bip39-integration' of https://github.com/rubixchain/rubixgoplatform into hari/bip39-integration
- 5a20ac5 Merge pull request #138 from rubixchain/hari/bip39-integration
- 78f1ab6 Merge pull request #141 from rubixchain/ashita/7quorumsFix
- 6c44878 Merge pull request #151 from rubixchain/arnab/tests
- 6d01309 Merge pull request #156 from rubixchain/hari/license-info
- 6dc08cf Merge pull request #164 from rubixchain/arnab/bump-version-number
- c0ceeec Merge pull request #165 from rubixchain/development
- a7cb842 Merge pull request #166 from rubixchain/arnab/gitignore-merge-conflict-fix
- ef0ef4d Merge pull request #167 from rubixchain/arnab/solve-merge-conflict
- 0e8dd5d Merge pull request #168 from rubixchain/arnab/hotfix/add-release-workflow-files
- cddac43 Merge pull request #89 from rubixchain/maneesha/PKIsign
- 87e899e Merge pull request #91 from rubixchain/hari/slipkey
- f0bdf57 Merge pull request #92 from rubixchain/ashita/explorer-url
- 5a29e51 Merge pull request #96 from rubixchain/hari/determintistic-ecdsa
- 9bdce0d Mnemonic file added
- 1df0779 NLSS verification updated in light mode
- 299d7c7 Nlss Backward Compatible
- dba88e5 [skip actions] Added
dist/in.gitignore - c5f424c [skip actions] update
- 204d340 added OS alias in artifact name
- 9ee397d added checks and instructions to support execution in windows os
- 56b19fd added dockerfile for running tests in ubuntu-amd64 environment
- 0f56783 added entry for .sh file extension
- 90d50f5 added func to get the build dir based on the target OS
- 698929a added methods to generate master and child keys
- 316ea9a added node_registry.json config to list all the node server indeces; run_non_quorum_nodes is removed
- dca12e5 added script to collect all quorum and non-quorum logs; added step in test workflow to upload the node logs as artifacts in Github Action sessions
- 8c4818f added test scenario for BIP39 and NLSS transfers
- 71b5e4c added timestamp for node log artifacts
- e9262f3 adding release github action files which were removed while merging PR #151
- d88e182 bip39
- 446824a bip39 integration
- 880319f bip39 modification and minor fixes
- 4fe4b00 bip39 update
- 746b3f2 bump rubixgoplatform version to 0.0.17
- 596e0d5 changed test swarm key
- f98fa98 changing variable and function names
- 7f28f4f comments added back
- 98d2f4d comments edited
- ce7cc90 compatibility with old wallets
- 5353f21 created three swarm keys for each os environment
- 763be72 deterministic ecdsa using go 1.19 legacy
- ec10991 did created successfully
- 757b285 feat: added API endpoint and CLI command to fetch a node's peer ID
- c0e07e5 feat: added python tests for RBT transfer
- 78d03f4 feat: added test workflow
- f4db465 fix for unpledging of tokens and 7 quorums
- 644dac4 fix light mode directory issue
- 57caa15 fixed BIP key gen BIPsign BIPverify
- a18ecd0 fixed bugs for to reduce waiting time
- 07a3db4 fixed occupied port and peer connection issue
- 92f859c fixed port unavailability
- 30bafad increased node liveness wait time to 40 seconds
- fa373cf merge conflict fix
- 27b1816 merge conflict fix
- a2479fa modularise fucntions
- d43d21f non quorums DIDs are now being registered for the RBT transfer transaction to happen successfully
- 061dcdc not appending sign version to Txn ID
- e587be8 paramterise bip child path
- d8b8aef ping peer to get peer did type
- 0ffbfc7 reduced node liveness wait time from 60 seconds to 15 seconds
- 9cba0ff refactor: added DID id string while a DID is being created using the CLI command; merge conflict fix
- 0ee0b5b removed a file
- 1539d2b removed comments
- 973d5c8 removed unneeded print statement
- f001866 removing changes on port unavailability issue
- 261d5b5 renamed test workflow artifiacts name
- 891864c sending transactions to explorer
- 43cc355 sign version added
- 68e1a9b sign version check
- 99cdbf1 succesful testRBT transfer in light mode
- d1cd6ff tested port-unavailability-fix on MacOs
- 8eadd96 updated Readme
- b74f84d updated go.mod
- b3e4b4a url prefix check
v0.0.16
Release Notes
New Feature: Alternative Quorum System
We are excited to introduce the new Alternative Quorum System in this release. This system acts as a backup validator when primary quorums are busy or offline, ensuring continuous operation and reliability of our network during high traffic periods or unexpected downtimes.
Core System Enhancements:
- Core Private Share Signing: Enhanced security protocols with the implementation of core private share signing.
- Token Transfer Initiations: Enabled smoother and more secure token transfer capabilities.
Transaction Handling Improvements:
- Transaction History Tracking: Developed comprehensive tracking to provide users with detailed transaction insights.
- Pledge Token Checks: Integrated new checks to ensure the authenticity and security of pledge tokens.
Wallet and Consensus Enhancements:
- Initial wallet functionalities and consensus code have been integrated, significantly improving platform robustness and user experience.
Development and Build Process Updates:
- Mac Configuration Support: Extended system build process to include configurations for Mac users.
- MakeFile and gitignore Revisions: Updated development settings for better management and efficiency.
Security and Service Enhancements:
- Token Authenticity Measures: Integrated measures to ensure token integrity and authenticity.
- Multi Pinchecks for Tokens: Implemented multiple security checks for enhanced token safety.
Smart Contracts and Network Operations:
- New features to boost smart contract capabilities and introduced a public subscription model for contracts.
- Optimized peer discovery processes and introduced a new quorum selection mechanism, enhancing network security and efficiency.
Bug Fixes and Optimizations:
- Addressed Linux path issues during migration, wallet mode changes, and made batch size adjustments for optimal performance.
- Refined threading models and updated proof verification mechanisms to streamline operations.
Documentation and UI Updates:
- Extensive updates to system documentation and user interface details to improve user accessibility and understanding.
Additional Enhancements:
- Improved IPFS repo management, migration processes, and streamlined token management.
- Introduced cryptographic enhancements to bolster security, and continued updates to keep pace with technological advancements.
Changelog
- f413da3 Add api and cmd : quorum-setup-check
- ff5f296 Add function moveFile
- c59c5fb Add proper error messages
- c02cc86 Fix : Consensus request to selected quorums only- Alternate Quorums
- 21df7cb Fix : Consensus request to selected quorums only- Alternate Quorums W/O comment
- 2ba45ce Fix: Quorom Status Check [Working]
- aa31ef9 Fix: flag quorumAddr not found [Add debug : WIP-Breaking]
- fb852b0 Fix: minor typo
- 876b418 Merge pull request #143 from rubixchain/allen/fix/smart-contract-rename-issue
- dbb2d86 Merge pull request #146 from rubixchain/ft/quorum-setup-check
- ae60718 Merge pull request #147 from rubixchain/development
- b23a852 Merge pull request #148 from rubixchain/ft/quorum-setup-check
- 2ddd268 Merge pull request #149 from rubixchain/development
- 617ff4e Remove hardcoded quorum count
- 7608b2a Update quorumlist to support Alternate quorum
v0.0.15
Release Notes
Changelog
- ff8745c Add TokenProviderMap to exixsting functions and refactor existing broken functions
- d0ce18f Add changes to struct TokenProviderMap [WIP:breaking]
- 24e5825 Add new role: ParentTokenPinByQuorumRole
- 392dec1 Add pin parent token in quorum side while transferring part token
- a879b98 Add token value to TokenProviderMap struct
- 3fe3d46 Fix minor typo
- 37b970c Fix: Change WholeTokenSplitLockRole to quorumRole
- 6fbd32b Fix: Corrected issue preventing proper addition of details
- 62c8660 Merge branch 'development' into kiran/bugfix/PinCheck
- f2ad325 Merge branch 'main' into gklps/pingcheckfix
- f9c2e14 Merge pull request #122 from rubixchain/development
- 756e2d4 Merge pull request #124 from rubixchain/kiran/bugfix/PinCheck
- 37e4520 Merge pull request #125 from rubixchain/gklps/pingcheckfix
- 50fdb87 Merge pull request #126 from rubixchain/gklps/pingcheckfix
- 924e80d Merge pull request #128 from rubixchain/gklps/pingcheckfix
- bf2c7bd Merge pull request #129 from rubixchain/development
- bf8c969 Merge pull request #131 from rubixchain/arnab/error-log-tokenchain-reciever
- 8fc875e Merge pull request #133 from rubixchain/kiran/fix/releasetokesn
- 7e279b0 Merge pull request #134 from rubixchain/development
- 801fc38 Merge pull request #135 from rubixchain/arnab/github-actions
- bc18ff1 Merge pull request #136 from rubixchain/arnab/part-token-transfer-fix
- a9b4b85 Merge pull request #137 from rubixchain/arnab/parent-child-token-info
- 756b357 Merge pull request #140 from rubixchain/feat/allen/pincheck
- b6cea85 Merge pull request #145 from rubixchain/development
- d35b259 Pincheck issue fix
- 4e39a9d bug fix release all tokens
- 9b399f4 bump version number
- ed45106 feat: add release Github Action workflow
- 882f278 feat: add token value and child token list information in TokenChainBlock
- cbf5ccb fix release Locked Tokens
- bc5177a fix: error occuring while transfering RBT with fractional component, while the sender only having whole tokens is fixed by routing this case to GetTokens func
- 201ad27 handling non connected peer in Pincheck
- 4380483 log update
- 53bf664 mainnet sync fix
- a18a5dd port fix
- eea62c3 releasse locked Tokens
- 6599c96 renamed childTokenList attribute to childTokens
- 7a6b74a required tokens whole token fetch logic update
- c25f6a4 version 14
v0.0.14
Release Notes
What's Changed
In this release, we introduced a new core system, initiated token transfers, and implemented core private share signing. Significant enhancements were made to transaction handling, including the development of transaction history tracking and pledge token checks. We've also added the initial wallet and consensus code, improving the platform's robustness.
Updates to the system's build process now support Mac configurations, along with revisions to the MakeFile and gitignore settings. Service enhancements were made, including the integration of token authenticity measures. Multi pinchecks for tokens have been developed, along with a variety of features focused on smart contracts, peer discovery, and quorum selection.
We tackled several bugs and made optimizations across the board. This includes fixes for Linux path issues during migration, wallet mode changes, and batch size adjustments for improved performance. The threading model for token pinchecks was refined, along with updates to proof verification mechanisms. A new feature for fetching transaction details by various identifiers was introduced, significantly enhancing user interaction with the platform.
This update also saw improvements in IPFS repo management, migration processes, and token handling mechanisms. We've streamlined parts token management, and made extensive updates to the system's documentation and user interface details.
Several new features have been rolled out, focusing on enhancing smart contract capabilities, and introducing public subscription models for contracts. Our peer discovery processes have been optimized, along with a new quorum selection mechanism that enhances the overall security and efficiency of network operations.
Furthermore, we've reduced dependencies, introduced cryptographic enhancements for better security, and provided updates to keep our platform ahead of technological advancements.