0.1.0 • Published 6 years ago

infinitechain_browser v0.1.0

Weekly downloads
6
License
ISC
Repository
github
Last release
6 years ago

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)