Шаблон, который вы используете, довольно типичен ... в конце концов, цепной код - это просто конечный автомат. Довольно часто иметь разные цепочки кодов, представляющих различные типы активов или классов активов. Обычно у вас будет несколько функций, управляющих жизненным циклом актива (что, как вам кажется). Типичный шаблон заключается в том, что первый аргумент при вызове chaincode представляет функцию, которую вы хотите вызвать, но только вам, если вы хотите изменить этот шаблон.
С точки зрения наличия разных политик одобрения для разных действий, предпринимаемых в одном и том же состоянии, это не поддерживается, поскольку обычно не требуется. Вы должны позаботиться о том, чтобы не перепутать политику одобрения (соглашение о выдаче вызова) с протоколом соглашения (например, я согласен продать вам мою машину). Этот тип логики, как правило, обрабатывается в функции (функциях) с цепным кодом (например, вы должны убедиться, что создатель вызова действительно является владельцем автомобиля).
Надеюсь, это поможет.
P.S. Если вы хотите иметь разные политики одобрения для разных типов транзакций, вы, вероятно, можете использовать одобрение на основе состояния ... политики в любом случае задаются с помощью цепного кода ... так что вы можете попытаться установить политику одобрения для каждого состояния на основе тип транзакции.