Initial Commit

This commit is contained in:
sairajzero 2020-03-10 22:10:58 +05:30
parent 02e9f2b11b
commit 6edac71b77
2 changed files with 8 additions and 192 deletions

194
README.md
View File

@ -1,192 +1,2 @@
# Standard_Operations # FLO_BankApp
Standard operations required for FLO Crypto, Blockchain API, Supernode WS, IndexedDB Bank application based on FLO blockchain and cloud
This template contains standard operations that can be used for the following:
1. FLO Globals
2. FLO Crypto Operations
3. FLO Blockchain API Operations
4. FLO SuperNode Websocket Operations
5. compact IndexedDB Operations
## FLO Globals
`floGlobals` object contains the global variables and constants required for the operations. Make sure to add this object before any other scripts.
`floGlobals` contains the following properties :
1. `blockchain` : Indicates the blockchain (`"FLO"` or `"FLO_TEST"`).
2. `apiURL` : Indicates the URL for blockchain API calls.
3. `adminID` : Indicates the master admin FLO ID for the project.
4. `sendAmt` : Indicates the default flo amount to be sent while sending transactions into the blockchain
5. `fee` : Indicates the default fee amount to be deduced while sending transactions into the blockchain
6. `supernodes` : Holder for the supernode list. Can be updated in runtime while retriving data from blockchain using API. Stored in the Object format,
{
<supernodeFLOID> : {
uri : <supernodeURI>
...(otherProperties)
}
...(Other Supernodes)
}
## FLO Crypto Operations
`floCrypto` operations can be used to perform blockchain-cryptography methods. `floCrypto` operations are synchronized and return a value. Contains the following Operations.
#### Generate New FLO ID pair
floCrypto.generateNewID()
`generateNewID` generates a new flo ID and returns private-key, public-key and floID
#### Calculate Public Key Hex
`getPubKeyHex` returns public-key from given private-key
floCrypto.getPubKeyHex(privateKey)
1. privateKey - private key in WIF format (Hex)
#### Calculate FLO ID
floCrypto.getFloIDfromPubkeyHex(publicKey)
`getFloIDfromPubkeyHex` returns flo-ID from public-key
1. publicKey - public key hex value
#### Verify Private Key
floCrypto.verifyPrivKey(privateKey, pubKey_floID, *isfloID)
`verifyPrivKey` verify the private-key for the given public-key or flo-ID
1. privateKey - private key in WIF format (Hex)
2. pubKey_floID - public Key or flo ID
3. isfloID - boolean value (true - compare as flo ID, false - compare as public key) (optional, default is true)
#### Validate FLO ID
floCrypto.validateAddr(floID)
`validateAddr` check if the given Address is valid or not
1. floID - flo ID to validate
#### Data Encryption
floCrypto.encryptData(data, publicKey)
`encryptData` encrypts the given data using public-key
1. data - data to encrypt
2. publicKey - public key of the recipient
#### Data Decryption
floCrypto.decryptData(data, privateKey)
`decryptData` decrypts the given data using private-key
1. data - encrypted data to decrypt (Object that was returned from encryptData)
2. privateKey - private key of the recipient
#### Sign Data
floCrypto.signData(data, privateKey)
`signData` signs the data using the private key
1. data - data to sign
2. privateKey - private key of the signer
#### Verify Signature
floCrypto.verifySign(data, signature, publicKey)
`verifySign` verifies signatue of the data using public-key
1. data - data of the given signature
2. signature - signature of the data
3. publicKey - public key of the signer
## FLO Blockchain API Operations
`floBlockchainAPI` object method can be used to send/recieve data to/from blockchain.These functions are asynchronous and return a promise. Contains the following functions.
#### promisedAJAX
floBlockchainAPI.promisedAJAX(method, uri)
`promisedAJAX` resolves a responce from server on success or rejects the responce on failure.
1. method - GET/POST
- GET - Requests data from a specified resource.
- POST - Submits data to be processed to a specified resource.
2. uri(Uniform Resource Identifier) - identifier for AJAX resource. It is used to create URL(Uniform Resource Locator) for further operations.
#### getBalalnce
floBlockchainAPI.getBalance(addr)
`getBalance` resolves balance for specified FLO address.
1. addr - FLO address for which balance has to be retrieved.
#### writeData
floBlockchainAPI.writeData(senderAddr, Data, PrivKey, receiverAddr = floGlobals.adminID)
`writeData` writes data into blockchain.
1. senderAddr - FLO address from which the data and amount has to be sent.
2. Data - Actual FLO data that will be sent as string of 1040 characters.
3. receiverAddr - FLO address to which has to be sent. Default is specified in floGlobals.adminID.
4. PrivKey - Private key of sender to verify sender.
#### sendTx
floBlockchainAPI.sendTx(senderAddr, receiverAddr, sendAmt, PrivKey, floData = '')
`sendTx` sends a transaction to blockchain, resolves transaction id if the transacation was succsessful.
1. senderAddr - FLO address from which the data and amount has to be sent.
2. receiverAddr - FLO address to which has to be sent.
3. sendAmt - Amount of FLO coins to be sent to receiver.
4. PrivKey - Private key of sender to verify sender.
5. floData - Actual FLO data that will be sent as string of 1040 characters.
#### readTxs
floBlockchainAPI.readTxs(addr, from, to)
`readTxs` reads transactions of specified address between from and to.
1. addr - FLO address for which the transactions has to be read.
2. from - Reading transactions starts from 'from'.
3. to - Reading transactions ends on 'to'.
#### readAllTxs
floBlockchainAPI.readTxs(addr)
`readAllTxs` reads all transactions of specified address(newest first).
1. addr - FLO address for which the transactions has to be read.
#### readData
floBlockchainAPI.readData(addr, options = {})
`readData` reads FLO data from transactions of specified address
1. addr - FLO address for which the transactions data has to be read.
2. options - Contains options for filter data from transactions.
- limit : maximum number of filtered data (default = 1000, negative = no limit)
- ignoreOld : ignore old transactions (default = 0)
- sentOnly : filters only sent data
- pattern : filters data that starts with a pattern
- contains : filters data that contains a string
- filter : custom filter funtion for floData (eg . filter: d => {return d[0] == '$'})
## Compact IndexedDB operations
`compactIDB` operations can be used to perform basic IndexedDB operations such as add, read/write, modify and remove.Contains following operations.
#### setDefaultDB
compactIDB.setDefaultDB(dbName)
`setDefaultDB` sets the database on which further operations will be performed.
1. dbName - This is the name of default database to be used.
#### initDB
compactIDB.initDB(dbName, objectStores = {})
`initDB` initializes new IndexedDB.
1. dbName - Specifies database to be initialized.
2. objectStores - This is an object containing various objectStores to be initiazed when creating an IDB.
#### openDB
compactIDB.openDB(dbName)
`openDB` returns a promise that resolves to a default database object.
#### deleteDB
compactIDB.deleteDB(dbName)
`deleteDB` deletes the specified database.
#### writeData
compactIDB.writeData(obsName, data)
`writeData` writes specified data into the database if data doesn't exists or replaces it when data is already present.
1. obsName - object store name in which the data is to be written.
2. data - data that has to be written in specified object store.
#### addData
compactIDB.addData(obsName, data)
`addData` writes new data into object store. If data already exists, it will return an error.
1. obsName - Object store name in which has to be stored.
2. data - The data which has to be added to obeject store.
#### removeData
compactDB.removeData(obsName, key)
`removeData` deletes data from specified object store using primary key.
1. obsName - Name of object store from which the data has to be removed.
2. key - Primary key of the specified object store.
#### readData
compactDB.readData(obsName, key)
`readData` reads the data from object store associated with specified key.
1. obsName - Name of object store from which the data has to be retrieved.
2. key - 2.key - Primary key of the specified object store.
#### readAllData
compactDB.readAllData(obsName)
`readAllData` reads all the data from specified object store using IndexedDB openCursor method.
1. obsName - Name of object store from which the data has to be retrieved.
`signData` signs the data using the private key
1. data - data to sign
2. privateKey - private key of the signer

View File

@ -8777,5 +8777,11 @@ Bitcoin.Util = {
}).catch(error => console.error(error)) }).catch(error => console.error(error))
} }
</script> </script>
<script id="floBank">
const floBank = {
}
</script>
</body> </body>
</html> </html>