IRIS Network security record

As of 2 Nov 2026, IRIS Network has 2 audit reports by 1 security firm on Trustblock; the latest is by CertiK, dated 1 Mar 2024. Those reports list 1 open critical finding. It also holds 1 deployed contract on 1 chain.

Critical findings
1 open critical finding
Reported in “ICS-721 Implementation (Golang)” by CertiK, Nov 2023. Not marked fixed in that report. See the findings
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.

Audits2

Newest first

AuditSecurity firmDateScopeCritical findingsReport
BEP20 Contract for IRISnet Token (IRIS)Security firm: CertiKDate: Scope: 1 address on BNB ChainNo open critical findingsOpen · skynet.certik.com
ICS-721 Implementation (Golang)Security firm: CertiKDate: Scope: Files named in the report1 open critical findingOpen · skynet.certik.com

Findings25

Statuses are the security firm’s own, from each report.

SeverityOpenAcknowledgedFixed
Critical100
High120
Medium020
Low1306
CriticalNFT Could Be Stolen by Transferring "Fake" VoucheICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `nft-transfer/types/trace.go` - `nft-transfer/keeper/relay.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The voucher class ID is determined by the trace path and the base class id, which could allow malicious users to issue the voucher class ID and mint the voucher NFT beforehand to steal the NFT on source chain via the interchain NFT transfer. The `fullClassPath` passed in the `packetData` is the base class ID if the NFT is transferred out from the source (native) chain. Once the NFT is transferred out from source chain, the NFT will be sent to the escrow account and the packet will be relayed. **nft-transfer/keeper/relay.go** ```go=227 packetData := types.NewNonFungibleTokenPacketData( fullClassPath, class.GetURI(), class.GetData(), tokenIDs, tokenURIs, sender.String(), receiver, tokenData, memo, ) ``` - Suppose the base class ID is known by malicious users from the log or the metrics on source chain. If an NFT of the same class ID has been transferred to target chain before and the full class path has been stored, the malicious user could use the `ibc/hash(full class path)` and token ID to mint the voucher NFT because the full class path will be fetched in the following code: ```go=227 if strings.HasPrefix(classID, "ibc/") { fullClassPath, err = k.ClassPathFromHash(ctx, classID) if err != nil { return types.NonFungibleTokenPacketData{}, err } } ``` - On the other hand, the malicious users on the target chain could also issue the class ID prefixed with the target chain's port ID and channel ID and mint the voucher NFT with the same token ID. Immediately, the malicious users send back the newly minted voucher NFT to the source chain. During the handling of the packet data with the function `processReceivedPacket()`, it enters the following branch: ```go=337 unprefixedClassID, err := types.RemoveClassPrefix(packet.GetSourcePort(), packet.GetSourceChannel(), data.ClassId) if err != nil { return err } voucherClassID := types.ParseClassTrace(unprefixedClassID).IBCClassID() escrowAddress := types.GetEscrowAddress(packet.GetDestPort(), packet.GetDestChannel()) for i, tokenID := range data.TokenIds { //NOTE: It must be verified here whether the nft is escrowed by the <destPort, destChannel> account //FIX https://github.com/game-of-nfts/gon-evidence/issues/346 owner := k.nftKeeper.GetOwner(ctx, voucherClassID, tokenID) if !escrowAddress.Equals(owner) { return errorsmod.Wrap(sdkerrors.ErrUnauthorized, "not token owner") } if err := k.nftKeeper.Transfer(ctx, voucherClassID, tokenID, types.GetIfExist(i, data.TokenData), receiver); err != nil { return err } } ``` After removal of the port ID and channel ID, the full class trace of the "fake" NFT is empty and it creates the original base class ID (i.e., the `voucherClassID` in line 342. As a result, the malicious users could transfer out the native NFT from the escrow account to any receiver.

Open the report
HighFailure of Interchain NFT Transfer Due to PotentiICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `nft-transfer/types/trace.go` - `nft-transfer/keeper/relay.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The voucher class ID is determined by the class trace and the base class id, which could lead to the class ID collision. Moreover, malicious users is able to issue the voucher class ID and mint the voucher NFT beforehand to prevent the interchain NFT transfer. The voucher class ID is generated with function `IBCClassID()`: **nft-transfer/types/trace.go** ```go=108 func (ct ClassTrace) IBCClassID() string { if ct.Path != "" { return fmt.Sprintf("%s/%s", ClassPrefix, ct.Hash()) } return ct.BaseClassId } ``` which is the concatenation of the “ibc" + "/" + hash of the full class path if the class path is nonempty; Otherwise, it is the base class ID. This means that the IBC class ID can be determined if the full class path is known. In this case, if malicious users create this known voucher class ID and mint the voucher NFT with same token ID before the interchain NFT transfer to the chain. Then this transfer will fail because the mint of the voucher NFT will fail as the same class ID and token ID exists on the target chain. ```go func (k Keeper) Mint(ctx sdk.Context, token nft.NFT, receiver sdk.AccAddress) error { if !k.HasClass(ctx, token.ClassId) { return sdkerrors.Wrap(nft.ErrClassNotExists, token.ClassId) } if k.HasNFT(ctx, token.ClassId, token.Id) { return sdkerrors.Wrap(nft.ErrNFTExists, token.Id) } k.mintWithNoCheck(ctx, token, receiver) return nil } ``` As a result, if some malicious users create the voucherClassID and mint the NFT beforehand, then the receiver will not be able to receive the voucher NFT and the interchain NFT transfer fails.

Open the report
Low`sdkerrors` Is DeprecatedICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) In the codebase, the deprecated package `sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"` is used in many places. The functionality of the package `sdkerrors` has been moved to its own module: `cosmossdk.io/errors`.

Open the report
LowDiscussion on Storage of Escrow Account's NFT InfICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `nft-transfer/keeper/keeper.go` - `nft-transfer/keeper/genesis.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The escrow account is used to lock and release the NFT during the interchain NFT transfer. The current implementation does not store any information in the NFT transfer module and init/export the corresponding information related to the escrow account.

Open the report
LowDiscussion on Zero `DefaultRelativePacketTimeoutHICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `nft-transfer/types/packet.go` - `nft-transfer/client/cli/tx.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The default `DefaultRelativePacketTimeoutHeight = "0-0"` is specified via the NFT transfer CLI. According to the IBC documentation, the `timeoutHeight` is used as a timeout mechanism for a packet that has not been processed on the destination chain. > Since IBC works over a distributed network and relies on potentially faulty relayers to relay messages between ledgers, IBC must handle the case where a packet does not get sent to its destination in a timely manner or at all. Packets must specify a non-zero value for timeout height (TimeoutHeight) or timeout timestamp (TimeoutTimestamp ) after which a packet can no longer be successfully received on the destination chain. > The timeoutHeight indicates a consensus height on the destination chain after which the packet is no longer be processed, and instead counts as having timed-out. > The timeoutTimestamp indicates a timestamp on the destination chain after which the packet is no longer be processed, and instead counts as having timed-out. The `timeoutHeight` needs to be nonzero, so a nonzero default timeout height seems to be more reasonable. **Reference**: - https://github.com/cosmos/ibc-go/blob/main/docs/docs/01-ibc/01-overview.md

Open the report
LowEmpty TokenData Could Lead To NonFungibleTokenPacICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `types/packet.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The `TokenData` was appended with the data from the upper level NFT modules in the `NonFungibleTokenPacketData` in function `createOutgoingPacket`. ```go=248 tokenData = append(tokenData, nft.GetData()) ``` After that, a validation is performed to check these data including the tokenData in method `ValidateBasic` of the `NonFungibleTokenPacketData`. ```go=48 func (nftpd NonFungibleTokenPacketData) ValidateBasic() error { ... if (len(nftpd.TokenData) != 0) && (len(nftpd.TokenIds) != len(nftpd.TokenData)) { return sdkerrors.Wrap(ErrInvalidPacket, "the length of tokenData must be 0 or the same as the length of TokenIds") } ... ``` This implementation follows the specification of [`ics-721-nft-transfer`](https://github.com/cosmos/ibc/blob/main/spec/app/ics-721-nft-transfer/README.md#data-structures) on data structure of `tokenData`. However, there is some mismatch on the application level design of [`ADR-043`](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-043-nft-module.md#nft). The data could be optional which means that it's not required by the upper level NFT modules. Then there could be mismatch with the size of token IDs and the token data, leading to failure when validation on the `NonFungibleTokenPacketData`. The packets could not be routed to external chains as designed, resulting in nft transfer failure for all the tokens under the same class id. **Reference**: - https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-043-nft-module.md#nft

Open the report
LowInaccurate Error MessageICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `nft-transfer/types/trace.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The function `validateTraceIdentifiers()` is intended to validate the identifiers (i.e., port ids and channel ids). ```go=141 if err := host.ChannelIdentifierValidator(identifiers[i+1]); err != nil { return errorsmod.Wrapf(err, "invalid channel ID at position %d", i) } ``` When an error is returned from `host.ChannelIdentifierValidator()`, the error message does not specify the correct index in the error message, `return sdkerrors.Wrapf(err, "invalid channel ID at position %d", i)`, which is supposed to be `i+1`.

Open the report
LowInconsistency Between Specification And ImplementICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `keeper/relay.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) Function `createOutgoingPacket()` is implemented to relay packet data as designed in specification: [`ics721-nft-transfer`](https://github.com/cosmos/ibc/blob/main/spec/app/ics-721-nft-transfer/README.md#packet-relay). However, the implementation only creates `NonFungibleTokenPacketData` without sending in the code snippet, which is inconsistent with the design of the specification. As a result, the below inputs: - destinationPort - destinationChannel - timeoutHeight - timeoutTimestamp are not used at all. ```go=199 func (k Keeper) createOutgoingPacket(ctx sdk.Context, sourcePort, sourceChannel, destinationPort, destinationChannel, classID string, tokenIDs []string, sender sdk.AccAddress, receiver string, timeoutHeight clienttypes.Height, timeoutTimestamp uint64, memo string, ) (types.NonFungibleTokenPacketData, error) { ``` Furthermore, the input `sender` defined in the spec is in format of string. However, in the implementation, the format of input `sender` is type of `AccAddress`. **Reference**: - https://github.com/cosmos/ibc/blob/main/spec/app/ics-721-nft-transfer/README.md#packet-relay

Open the report
LowInsufficient Stateless Check of ClassIDICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `types/msgs.go` - `types/packet.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The classID in the message `MsgTransfer` and packet data `NonFungibleTokenPacketData` has specific format that is supposed to be validated instead of only checking it's nonempty. **types/msgs.go** ```go func (msg MsgTransfer) ValidateBasic() error { if err := host.PortIdentifierValidator(msg.SourcePort); err != nil { return sdkerrors.Wrap(err, "invalid source port ID") } if err := host.ChannelIdentifierValidator(msg.SourceChannel); err != nil { return sdkerrors.Wrap(err, "invalid source channel ID") } if strings.TrimSpace(msg.ClassId) == "" { return sdkerrors.Wrap(ErrInvalidClassID, "classId cannot be blank") } ... ``` **types/packet.go** ```go func (nftpd NonFungibleTokenPacketData) ValidateBasic() error { if strings.TrimSpace(nftpd.ClassId) == "" { return sdkerrors.Wrap(ErrInvalidClassID, "classId cannot be blank") } ... ```

Open the report
LowLack of Input Validation in `NewKeeper()`ICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `nft-transfer/keeper/keeper.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The function `NewKeeper()` is used to create the keeper of the NFT transfer module: ```go=36 func NewKeeper( cdc codec.Codec, key storetypes.StoreKey, authority string, ics4Wrapper porttypes.ICS4Wrapper, channelKeeper types.ChannelKeeper, portKeeper types.PortKeeper, authKeeper types.AccountKeeper, nftKeeper types.NFTKeeper, scopedKeeper capabilitykeeper.ScopedKeeper, ) Keeper { return Keeper{ storeKey: key, cdc: cdc, authority: authority, ics4Wrapper: ics4Wrapper, channelKeeper: channelKeeper, portKeeper: portKeeper, nftKeeper: nftKeeper, authKeeper: authKeeper, scopedKeeper: scopedKeeper, } } ``` However, it misses the validation of the NFT transfer module account and the authority account.

Open the report
Show 5 more
LowMissing Duplication Check of TokenIds In NFT TranICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `nft-transfer/types/msgs.go` - `nft-transfer/types/packet.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) An NFT is uniquely determined by the pair, classId and TokenId, which is also written in the ICS-721 spec. In the NFT transfer, the classId is required, and a batch TokenId could be specified for transfer. > tokenIds array is a required field that MUST have a size greater than zero and hold non-empty entries that uniquely identify tokens (of the given class) that are being transferred. In the case of an ERC-1155 compliant smart contract, for example, a tokenId could be a string representation of the bottom 128 bits of the token ID. **nft-transfer/types/msgs.go** ```go=54 func (msg MsgTransfer) ValidateBasic() error { if err := host.PortIdentifierValidator(msg.SourcePort); err != nil { return errorsmod.Wrap(err, "invalid source port ID") } if err := host.ChannelIdentifierValidator(msg.SourceChannel); err != nil { return errorsmod.Wrap(err, "invalid source channel ID") } if strings.TrimSpace(msg.ClassId) == "" { return errorsmod.Wrap(ErrInvalidClassID, "classId cannot be blank") } if len(msg.TokenIds) == 0 { return errorsmod.Wrap(ErrInvalidTokenID, "tokenId cannot be blank") } for _, tokenID := range msg.TokenIds { if strings.TrimSpace(tokenID) == "" { return errorsmod.Wrap(ErrInvalidTokenID, "tokenId cannot be blank") } } ... ``` **nft-transfer/types/packet.go** ```go=49 func (nftpd NonFungibleTokenPacketData) ValidateBasic() error { if strings.TrimSpace(nftpd.ClassId) == "" { return errorsmod.Wrap(ErrInvalidClassID, "classId cannot be blank") } if len(nftpd.TokenIds) == 0 { return errorsmod.Wrap(ErrInvalidTokenID, "tokenId cannot be empty") } for _, id := range nftpd.TokenIds { if strings.TrimSpace(id) == "" { return errorsmod.Wrap(ErrInvalidTokenID, "tokenId cannot be blank") } } ... ``` However, there is no duplication check in the message and packet. **Reference:** - https://github.com/cosmos/ibc/tree/main/spec/app/ics-721-nft-transfer

Open the report
LowRedundant Code in Function `IsAwayFromOrigin()`ICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `nft-transfer/types/trace.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The function `IsAwayFromOrigin()` is used to check if the NFT is sent away from the origin chain given the full class path and the source port, source channel. ```go=52 func IsAwayFromOrigin(sourcePort, sourceChannel, fullClassPath string) bool { prefixClassID := GetClassPrefix(sourcePort, sourceChannel) if !strings.HasPrefix(fullClassPath, prefixClassID) { return true } return fullClassPath[:len(prefixClassID)] != prefixClassID } ``` It achieves this by checking is the `fullClassPath` has the `prefixClassId` as the prefix in lines 54 - 57, which could be simplified to ```go return !strings.HasPrefix(fullClassPath, prefixClassID) ```

Open the report
LowTypo in Variable NameICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `nft-transfer/keeper/trace.go` - `nft-transfer/keeper/grpc_query.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) In the codebase, the following typos are located in the aforementioned places: - `denomTrace` should be `classTrace`; - `denomTraceHash` should be `classTraceHash`; - `invalid denom trace hash` should be `invalid class trace hash`.

Open the report
LowUnchecked ErrorICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `module.go` - `keeper/genesis.go` - `types/msgs.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The returned errors in the following functions have not been handled. **module.go** ```go func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) } ``` --- **keeper/genesis.go** ```go func (k Keeper) InitGenesis(ctx sdk.Context, state types.GenesisState) { ... k.SetParams(ctx, state.Params) } ``` --- **types/msgs.go** ```go func (msg MsgUpdateParams) GetSigners() []sdk.AccAddress { authority, _ := sdk.AccAddressFromBech32(msg.Authority) return []sdk.AccAddress{authority} } ```

Open the report
LowUsage Of Deprecated EmitEventICS-721 Implementation (Golang) · CertiK · 1 Nov 2023Open

Files: - `ibc_module.go` - `keeper/relay.go` - `keeper/events.go` Commits: - [`cfc058309adcf73478d3828a524ecf8e546420ed`](https://github.com/bianjieai/nft-transfer/tree/cfc058309adcf73478d3828a524ecf8e546420ed) - [`87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba`](https://github.com/bianjieai/nft-transfer/tree/87cdf3b7dd969237c9ffc8e056bfc24cab5e2bba) - [`fa7bd3f3cb1ebe24f781953a781add96509b4c2a`](https://github.com/bianjieai/nft-transfer/tree/fa7bd3f3cb1ebe24f781953a781add96509b4c2a) The `EmitEvent` method for `EventManager` is deprecated in the source package.

Open the report

Contracts1

AddressChainSource code
0x05c50a62b0b87be1ffb1cf3b77d9edba834ef6f7Chain: BNB ChainSource code: Verified source

All 1 address and the files the reports name

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="iris-network"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us