Давайте воспользуемся примером вашего House State
Состояние вашего дома может выглядеть примерно так:
@BelongsToContract(HouseContract::class)
data class HouseState (
val address: String,
val appraisal: Amount<USD>,
val owner: Party,
val participants: List<Party>,
override val linearId: UniqueIdentifier = UniqueIdentifier()
): ContractState, LinearState {
fun withNewOwner(party: Party): HouseState {
return this.copy(owner = party)
}
override val participants: List<AbstractParty> get() = players
}
}
В Корде государства неизменны. Вы бы сменили владельца Дома, отметив состояние ввода как использованное и выпустив новый houseState в книгу с обновленным полем владельца.
В некоторых штатах даже есть удобные методы (см. HouseState выше), которые возвращают копию состояния ввода с обновленным полем (в данном случае владельцем) для включения в транзакцию в качестве состояния вывода.