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. 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.
16. 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;
}
...
}
17. 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);
}
}
18. 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()); ...
}
}