1 of 45

Web3 through the lens of

Spatial Finance 🌱

John IV

Technical Director

London Blockchain Labs

2 of 45

What is Web3?

A decentralized spatial finance application

🌱

3 of 45

Developer Advocate� @ Ordnance Survey

Technical Director

@ London Blockchain Labs

Founder

@ Astral Protocol

John IV

@johnx25bd

john.iv@x25bd.com

4 of 45

It makes economic sense to pollute.

5 of 45

  • Blockchains and distributed ledgers
  • Smart contracts
  • Distributed file storage
  • Self sovereign identity
  • Decentralized autonomous organizations

The decentralized web

The user-controlled Internet

Cryptography: Hashing /

Digital signature algorithms

Networked computing

Open consensus �protocols

Game theory

6 of 45

  • Often unnecessary, overly complex, too expensive.

  • Sometimes intensely useful as a highly efficient coordination tool.�
  • Aim: safer, more resilient, more just for users.

The decentralized web

The user-controlled Internet

7 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

8 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

9 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

0x25bd

1.23411

0xEeEeE

0.12839

10 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time

0x25bd

1.23411

0xEeEeE

0.12839

11 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

(Nakamoto 2008)

12 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

(Wood 2013)

13 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

14 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

15 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

}

block

16 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

} transaction

17 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

18 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

19 of 45

A blockchain is a type of database maintained by a consensus network, which - according to a protocol - validates blocks of transactions to update the state of the ledger over time.

time

20 of 45

A smart contract is a computer program stored on a blockchain and executed by the consensus network.

21 of 45

A smart contract is a computer program stored on a blockchain and executed by the consensus network.

22 of 45

A smart contract is a computer program stored on a blockchain and executed by the consensus network.

23 of 45

A smart contract is a computer program stored on a blockchain and executed by the consensus network.

24 of 45

// SPDX-License-Identifier: GPL-3.0

pragma solidity >= 0.7.0;

contract Coin {

// The keyword "public" makes variables

// accessible from other contracts

address public minter;

mapping (address => uint) public balances;

// Events allow clients to react to specific

// contract changes you declare

event Sent(address from, address to, uint amount);

// Constructor code is only run when the contract

// is created

constructor() {

minter = msg.sender;

}

// Sends an amount of newly created coins to an address

// Can only be called by the contract creator

function mint(address receiver, uint amount) public {

require(msg.sender == minter);

require(amount < 1e60);

balances[receiver] += amount;

}

// Sends an amount of existing coins

// from any caller to an address

function send(address receiver, uint amount) public {

require(amount <= balances[msg.sender],"Insufficient balance.");

balances[msg.sender] -= amount;

balances[receiver] += amount;

emit Sent(msg.sender, receiver, amount);

}

}

compiler

{

"generatedSources": [],

"linkReferences": {},

"object": "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061047f806100606000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063075461721461005157806327e235e31461008557806340c10f19146100dd578063d0679d341461012b575b600080fd5b610059610179565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100c76004803603602081101561009b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061019d565b6040518082815260200191505060405180910390f35b610129600480360360408110156100f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506101b5565b005b6101776004803603604081101561014157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610283565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461020d57600080fd5b789f4f2726179a224501d762422c946590d91000000000000000811061023257600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610338576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e73756666696369656e742062616c616e63652e000000000000000000000081525060200191505060405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055507f3990db2d31862302a685e8086b5755072a6e2b5b780af1ee81ece35ee3cd3345338383604051808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505056fea2646970667358221220118e3c47ebc48b82786bd6ba9bbcfbc22c0a919052a99fca1b4780de0035e7c664736f6c63430007050033",

"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x47F DUP1 PUSH2 0x60 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7546172 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0x85 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0xD0679D34 EQ PUSH2 0x12B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x179 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1B5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x283 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH25 0x9F4F2726179A224501D762422C946590D91000000000000000 DUP2 LT PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x338 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x496E73756666696369656E742062616C616E63652E0000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH32 0x3990DB2D31862302A685E8086B5755072A6E2B5B780AF1EE81ECE35EE3CD3345 CALLER DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT DUP15 EXTCODECOPY SELFBALANCE 0xEB 0xC4 DUP12 DUP3 PUSH25 0x6BD6BA9BBCFBC22C0A919052A99FCA1B4780DE0035E7C66473 PUSH16 0x6C634300070500330000000000000000 ",

"sourceMap": "63:1047:0:-:0;;;444:48;;;;;;;;;;476:10;467:6;;:19;;;;;;;;;;;;;;;;;;63:1047;;;;;;"

}

25 of 45

A smart contract is a computer program stored on a blockchain and executed by the consensus network.

ethers.js

(async function() {

// Create an instance of a Contract Factory

let factory = new ethers.ContractFactory(abi, bytecode, wallet);

// Notice we pass in "Hello World" as � //the parameter to the constructor

let contract = await factory.deploy("Hello World");

await contract.deployed()

// Done! The contract is deployed.

})();

Creates a contract instance

+

returns

A contract address

0xd9145CCE52D386f254917e481eB44e9943F39138

26 of 45

A smart contract is a computer program stored on a blockchain and executed by the consensus network.

Invokes contract + �Updates state

to: contract address

27 of 45

A smart contract is a computer program stored on a blockchain and executed by the consensus network.

🤯

Smart contracts can own assets and transfer them based on clearly defined rules.

28 of 45

What is Web3?

A decentralized spatial finance application

🌱

29 of 45

A decentralized spatial finance application

🌱

30 of 45

🛰 Spatial Finance

the integration of geospatial data and analysis into financial theory and financial practice.”

🌱

Dr Ben Caldecott

Founding Director

Oxford Sustainable Finance Programme

31 of 45

Web3 x

Spatial Finance

🌱

32 of 45

The Problem

💰 Incentive structures limit � climate action.

🌱

33 of 45

The Opportunity

💡 Redesign these incentive � structures using Web3 technologies.

🌱

34 of 45

A sustainability-linked bond

🛰

Validator

ML

16 Jun: 0.1421

17 Jun: 0.1231

18 Jun: 0.1771

19 Jun: 0.2021

20 Jun: 0.2001

21 Jun: 0.2314

oracle

API

🔏→ cash transfers

🔏→ Δ interest rate

🔏→ conditional loan

disbursements

🔏→ ESG auditing

🌱

35 of 45

Spatial data analysis

Raster

Vector

🌱

36 of 45

Spatial data analysis

Ordnance Survey | 15th April 2020

Raster

Vector

🌱

37 of 45

Spatial data analysis

Raster

Vector

0

1

0

0

0

0

0

0

1

1

0

0

0

0

0

1

1

1

0

0

0

0

1

1

1

1

0

0

0

1

1

1

1

1

0

[9.3, 8.7],

[11.5, 6.2],

[10.4, 1.1],

[7.7, 0.3],

[6.0, 2.3],

[5.1, 0.2],

[[2.5, 7.0],

[2.5, 7.0]]

🌱

38 of 45

Spatial data analysis

Raster

Vector

0

1

0

0

0

0

0

0

1

1

0

0

0

0

0

1

1

1

0

0

0

0

1

1

1

1

0

0

0

1

1

1

1

1

0

[9.3, 8.7],

[11.5, 6.2],

[10.4, 1.1],

[7.7, 0.3],

[6.0, 2.3],

[5.1, 0.2],

[[2.5, 7.0],

[2.5, 7.0]]

🌱

39 of 45

Spatial data analysis

Raster

Vector

0

1

0

0

0

0

0

0

1

1

0

0

0

0

0

1

1

1

0

0

0

0

1

1

1

1

0

0

0

1

1

1

1

1

0

[9.3, 8.7]

[11.5, 6.2]

[10.4, 1.1]

[7.7, 0.3]

[6.0, 2.3]

[5.1, 0.2]

[2.5, 7.0]

🌱

40 of 45

Spatial data analysis

Ordnance Survey | 15th April 2020

Raster

Vector

0

1

0

0

0

0

0

0

1

1

0

0

0

0

0

1

1

1

0

0

0

0

1

1

1

1

0

0

0

1

1

1

1

1

0

[9.3, 8.7]

[11.5, 6.2]

[10.4, 1.1]

[7.7, 0.3]

[6.0, 2.3]

[5.1, 0.2]

[2.5, 7.0]

🌱

rasterio

geopandas,

41 of 45

A sustainability-linked bond

🌱

… 🔮

capture

analysis

storage

oracle

Smart contract

Data

42 of 45

A sustainability-linked bond

🌱

Year

Mean annual NOx

Fixed payment

Variable payment

Total payment

2020

51.334

£100 000

£51 334

£151 334

2021

53.854

£100 000

£53 854

£153 854

2022

49.122

£100 000

£49 122

£149 122

2023

47.331

£100 000

£47 331

£147 331

2024

43.355

£100 000

£43 355

£143 355

43 of 45

The potential of Web3

🌱

🕴

🌱

💰

44 of 45

The potential of Web3

🕴

🌱

💰

🌱

45 of 45

Questions?

@ldnlabs

@johnx25bd

@astraldao