CSR расшифровывается как гарантированный доход по контракту. Эта новая функция, реализованная в сети Canto, стимулирует разработчиков присоединиться к платформе и развиваться на ней. Это позволяет разработчикам получать долю платы за газ, которую пользователи используют для транзакций со своими смарт-контрактами, вместо того, чтобы сжигать весь газ.

Почему это реализовано? Это способ побудить разработчиков развиваться в сети Canto. Это достигается за счет предоставления им потока доходов от их смарт-контрактов, который не связан с какой-либо погоней за рентой. Смарт-контракты после развертывания являются общедоступным кодом. Их можно очень быстро копировать и повторно использовать для создания того же продукта. Если смарт-контракт ведет к получению ренты, его легко скопировать, убрать взимаемую плату и повторно развернуть. Пользователи предпочитают приложение с меньшей комиссией, поэтому они перейдут на это модифицированное приложение. Это лишает разработчиков возможности зарабатывать деньги на смарт-контрактах. Наряду с созданием своего приложения, они должны сделать его очень трудным для копирования. CSR устраняет необходимость в погоне за рентой в canto, поэтому разработчики могут создавать бесплатные децентрализованные приложения без погони за рентой и при этом получать от них деньги.

На данный момент комиссия составляет 20%. То есть 20% всего газа, используемого для сделки с контрактом, пойдет собственнику. Вы можете включить это для своего смарт-контракта; если вы решите не включать его, вместо этого будет сожжено 20%. Это означает, что плата за газ, которую будут платить пользователи, будет одинаковой независимо от CSR. Это очень важно, потому что если бы плата за газ была меньше для контракта, который не принимает CSR, то проблема выше не решена. Кто-то может повторно развернуть те же контракты и не включить CSR. Вместо этого пользователи будут использовать его, так как плата за газ будет ниже.

КСО реализуется посредством двух компонентов, которые работают вместе. Контракт Turntile.sol и космический модуль x/csr.

Пользовательский поток

Пользователь здесь — разработчик, который хочет включить CSR для своего смарт-контракта и получить за это средства. Пользователю нужно только взаимодействовать с договором турникета.

Им нужно будет добавить в свой контракт функцию, которая вызывает функцию register или assign на турникете. Эти две функции — разные способы сообщить контракту Turnstile, что эти смарт-контракты хотят генерировать доход CSR.

Затем, всякий раз, когда пользователь захочет вывести свои начисленные комиссии, ему придется вызывать функцию снятия на Турникете из авторизованной учетной записи. Эта функция отправит соответствующие средства пользователю.

Учетные записи авторизованы, когда они владеют соответствующими NFT, отчеканенными и поддерживаемыми контрактом турникета. Каждый зарегистрированный смарт-контракт сопоставляется с определенным NFT. Владелец этого NFt уполномочен взимать плату за этот смарт-контракт. С NFT может быть связано несколько смарт-контрактов, но каждый смарт-контракт может быть связан только с одним NFT.

Турникет.соль

Это относительно простой контракт. Он имеет следующие магазины и функции.

Магазины

feeRecipient: это сопоставление address->NftData, которое сопоставляет смарт-контракты с соответствующими NFT.

балансы: это сопоставление uint256 => uint256 . В нем хранятся комиссии, начисленные за каждый NFT.

Функции

регистрация: эта функция позволяет зарегистрировать смарт-контракт в CSR. Ее должен вызывать сам смарт-контракт, и функция будет чеканить NFT с правом на смарт-контракт на адрес, переданный в аргументах.

назначить: эта функция позволяет вам подписать права смарт-контракта на существующий NFT. Эта функция также должна вызываться самим смарт-контрактом, а идентификатор NFT передается в аргументах.

снять: эта функция позволяет пользователю с авторизованным NFT снимать средства, накопленные в контракте турникета.

distributeFees: вызывается модулем x/csr каждый раз, когда происходит транзакция с зарегистрированным смарт-контрактом. Он отправляет 20% газа, используемого в транзакции, на контракт Turnstile, и контракт обновляет свое хранилище данных, чтобы сопоставить эти новые средства с соответствующим NFT.

X/csr-модуль

Это космический модуль SDK, который вызывает функцию турникета distributefees и, по сути, работает, чтобы взять 20% платы за газ и отдать ее владельцу смарт-контракта. Все это происходит в функции PostTxProcessing в SDK Cosmos. Модуль проверит, является ли счет, с которым осуществляется операция, зарегистрированным контрактом; если это так, он отправит соответствующее разделение средств.

Примечания —

Вы не можете зарегистрировать учетную запись без смарт-контракта. Функция регистрации на Turnstile не подведет, но плата не будет начисляться на отчеканенный NFT, и если фактический смарт-контракт будет назначен этому NFT, то этот смарт-контракт также не будет приносить никакого дохода.