Класс контракта должен изменяться всякий раз, когда вы обновляете состояние, но налагаемые им правила могут оставаться прежними.
Этого можно достичь, делегировав проверку транзакции старому контракту:
override fun verify(tx: LedgerTransaction) {
ObligationContractV1().verify()
}
Вы также можете делегировать проверку старому контракту и добавить дополнительные проверки:
override fun verify(tx: LedgerTransaction) {
ObligationContractV1().verify()
additionalChecks()
}
Однако учтите, что делегирование verify
таким образом при обновлении состояний будет работать только в том случае, если исходный контракт не установлен.Твердо закодирован для проверки транзакции в терминах старого состояния.Вам придется написать исходный контракт в терминах некоторого интерфейса или абстрактного класса, реализованного как старым классом состояний, так и новым классом состояний, или каким-либо другим способом написать старый контракт открытым способом.Если вы изначально не писали старый контракт таким дальновидным способом, вам придется переписать метод verify
.