0.1.0 • Published 6 years ago
infinitechain_browser v0.1.0
Infinitechain Browser
Structure
IFCBuilder
IFC
- client
- makeRawPayment
- audit
- takeObjection
- verifyPayment
- saveRawPayment
- getRawPayment
- savePayment
- getPayment
- export
- crypto
- getOrNewKeyPair
- importSignerKey
- importCipherKey
- encrypt
- decrypt
- sign
- verify
- getSignerAddress
- keyInfo
- sidechain
- getIFCContract
- getStage
- getStageRootHash
- getLatestStageHeight
- getSlice
- event
- watchAddStage
- watchObjection
- watchExonerate
- watchFinalize
Example
1. Use IFCBuilder to create an ifc object
Import dist/infinitechain_browser.js
in html file.
<script type="text/javascript" src="infinitechain_browser.js"></script>
Then, you can new ifc object to use.
ifc = new IFCBuilder()
.setNodeUrl("http://0.0.0.0:3000")
.setWeb3Url("http://0.0.0.0:8545")
.setStorageType('local')
.setClientAddress('0x49aabbbe9141fe7a80804bdf01473e250a3414cb')
.setServerAddress('0x5b9688b5719f608f1cb20fdc59626e717fbeaa9a')
.build()
2. Use crypto
to generate key pair and you can also import your private key
ifc.crypto.getOrNewKeyPair()
ifc.crypto.keyInfo()
ifc.crypto.importSignerKey('YOUR_PRIVATE_KEY')
3. Make raw payment with specific format and save it.
When client wants to purchase a product, makeRawPayment()
should be called to produce a raw payment. After that, client can call saveRawPayment()
to save it and then send to server.
rawPayment = ifc.client.makeRawPayment(value, data)
ifc.client.saveRawPayment(rawPayment)
/*
rawPayment = {
from: '0x49aabbbe9141fe7a80804bdf01473e250a3414cb',
to: '0x5b9688b5719f608f1cb20fdc59626e717fbeaa9a',
value: 100,
localSequenceNumber: 99,
stageHeight: 3,
data: {
foo: 'bar',
pkClient: '-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5SxAR4lIyHg3vF/DbWKq\nZfedueCC6TpSMmD3LMZ2vhvI8cO1ydmDRTngJlgiKCcQFGGRcDqI5vxBfE4vdCy/\nDFw1zTiT9pPLUWGZNT4YxlcdFUJ26b4YqRHUk8Tfg4YNSUTaNKaj2VKj3NyLrchN\neunMWeLj+QlfdjV5zUkOy9pbMj0co1gDAK85jnO8NJupycWyA/ezfpaoTfJj2Ijd\n2b0+nCWCdWw8oWBJH9uXhCetbTI2QjYYOXj77aICrr2OUH4OkiZMoiIXAIV0D+P9\nysa6hgFzv5xAlO39mOnnu4wRoYJIIaHZyvNMVkdt4ZavZPuTuAQIPODy8/n19QWq\nRQIDAQAB\n-----END PUBLIC KEY-----',
pkStakeholder: '-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiQgP8iTDok0b1JSIPmbE\nzCKSphTfHm57Mu3LIgz9PD3vfcVW43sqAMOkelRijqmUpNLW0OBYzNIgH7sIIrhG\n89zXxXG/s4ewrbcbJn8XhotFoJQFLzBFovgYv34v3ZYmlCZsApWAtXkxWveq54FJ\nsQFrUWA+J/FNkp4uqu2Ekenn8OnuYYn25LdZPiUugOPMrALk4hS6nDSBmfVSPPka\nDilawdZwjkQGH9uu8pOFYG+oT1q9MYahrkmRzY05Q4zHOhB8HPzsbz0HpuwanXga\n/HqEmvBn0EJs+SrkZZmyZ6bjz1Izx8Io67HEje9JUeV6qDLE/ZQ/PXoRLnqg3Yqd\nIwIDAQAB\n-----END PUBLIC KEY-----'
}
}
*/
console.log(rawPayment);
4. Verify payment and save it.
After client receive a payment that included a server's signature, client should call verifyPayment()
to verify the integrity of payment. If it is valid, client could call savePayment()
to save it.
ifc.client.verifyPayment(payment)
ifc.client.savePayment(payment)
5. Audit payment
After client is notified by a AddNewStage event
, he can call audit()
to audit the payments that are related to the event.
ifc.client.audit(paymentHash)
6. Take objection
When a result of the distributed auditing is false, client can call takeObjection()
.
ifc.client.takeObjection(payment)