0.0.5 • Published 8 years ago
infinitechain_client v0.0.5
Infinitechain Client
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
ifc = new IFCBuilder()
.setNodeUrl("http://0.0.0.0:3000")
.setWeb3Url("http://0.0.0.0:8545")
.setStorageType('chrome-extension')
.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
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
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)