Successfully reported this slideshow.

Service Token QCON Presentation

2

Share

Loading in …3
×
1 of 18
1 of 18

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Service Token QCON Presentation

  1. 1. Service Tokens alex.batlin@trustology.io https://github.com/Trustology/ServiceToken
  2. 2. Alex Batlin Founder & CEO of Trustology Before starting Trustology, Alex Batlin was the Global Head of Emerging Business & Technology team and the Global Blockchain Lead at BNY Mellon, responsible for research and development of emerging technology enabled business strategy, business models, products and services. Previously, Alex was a Senior Innovation Manager at UBS, a founding head of both UBS's FinTech Innovation Lab based in UK's Level 39 accelerator and UBS's Crypto 2.0 Pathfinder research programme into blockchain technology and its impact on business models. Alex is the founding member of EEA, USC, Trusted IoT and R3 consortias.
  3. 3. Trustology safeguarding crypto assets Trustology is building a custody platform to safeguard your crypto assets. Our smart accounts will be customisable to satisfy the diverse needs of individual, corporate, exchange and institutional clients, now and in the future.
  4. 4. Problem Consultancy Q1 Q2 Q3 Q4 Budget Approval Consultancy NeedBudget Risk Consultant Client
  5. 5. Service Units Consultant 100 82 010 Client 100 91 19
  6. 6. Service Tokens Consultant 100 82 010 Client 100 82 010
  7. 7. Service Token Components
  8. 8. Service Token Contracts
  9. 9. ServiceAgreement Workflow
  10. 10. ServiceTask Workflow
  11. 11. AgreementFactory contract AgreementFactory { event Agreement(ServiceAgreement agreement, ...); ServiceAgreement[] public agreements; // registry of agreements ... function createAgreement(...) { ServiceAgreement agreement = new ServiceAgreement(...); agreements.push(agreement); Agreement(agreement, msg.sender, issuer, beneficiary); } function getAgreements() returns (ServiceAgreement[] _agreements) { return agreements; } ... }
  12. 12. ServiceAgreement contract ServiceAgreement { enum States { Created, Proposed, Withdrawn, Accepted, Rejected } event StateChange(States indexed oldState, States indexed newState); States public state; ServiceToken public token; // link to the created token AgreementFactory public factory; // validatecontract is recognised by factory ... modifier onlyIssuer { require(msg.sender == issuer); _; } ... function ServiceAgreement(...) { ... factory = AgreementFactory(msg.sender); state = States.Created; } function propose(bytes32 hashedHash) onlyIssuer onlyCreated { contentHash = hashedHash; state = States.Proposed; StateChange(States.Created, States.Proposed); } }
  13. 13. ServiceToken contract ServiceToken { event Transfer(address indexed _from, address indexed _to, uint256 _value); ServiceAgreement public agreement; // Backlink to agreement ServiceTask[] public tasks; // Stores the registry of creating task contracts ... function balanceOf(address _addr) constant returns (uint256 balance) { if ((now > agreement.validFrom()) && (now < agreement.expiresEnd())) { return balances[_addr]; // otherwise return the balance as is } else { return 0; } } ... function transfer(address _to, uint256 _value) { ... require(now > agreement.validFrom()); require(now < agreement.expiresEnd()); ... } }

×