const playerA = new Wallet()
const playerB = new Wallet()
let chain = new StateChain(playerA.publicKey,playerB.publicKey)
const s0 = {
seqnum:0,
prev:"",
data:{
nextPlayer: "X",
winner: "",
board: [
['-','-','-'],
['-','-','-'],
['-','-','-'],
]
}
}
const h0 = hash(s0)
chain.pushState( new State(s0,playerA.encrypt(h0),playerB.encrypt(h0)) )
chain.verifyLastState(true)
const s1 = {
seqnum:1,
prev:chain.lastEncryptedHash,
data:{
nextPlayer: "O",
winner: "",
board: [
['-','-','-'],
['-','-','X'],
['-','-','-'],
]
}
}
const h1 = hash(s1)
chain.pushState( new State(s1,playerA.encrypt(h1),playerB.encrypt(h1)) )
chain.verifyLastState(true)
const s2 = {
seqnum:2,
prev:chain.lastEncryptedHash,
data:{
nextPlayer: "X",
winner: "",
board: [
['-','-','-'],
['-','O','X'],
['-','-','-'],
]
}
}
const h2 = hash(s2)
chain.pushState( new State(s2,playerA.encrypt(h2),playerB.encrypt(h2)) )
chain.verifyLastState(true)
chain.verifyAll(true)