Git Product home page Git Product logo

cosmos-sdk-interchain-account's Introduction

Note: ⚠️ Interchain Accounts is now being developed on cosmos/interchain-account

This repository has now been archived. Please check the latest development progress at cosmos/interchain-account.

Interchain Accounts

Interchain accounts allows a IBC-connected foreign blockchain to send a transaction via the local account of the a local blockchain.

Introduction

This repository contains the code to operate an IBC interchain account as specified in Interchain Standards 27. Please refer to the ICS27 specification for technical details on how interchain accounts work. Current implementation supports interchain accounts on the Cosmos-SDK implementation of ICS27. For information on use-cases of interchain accounts, please refer to this introductory blogpost.

Demo Build

Use the demo branch to build the interchain accounts demo.

Instructions on how to build can be found here.

License

Apache2.0

cosmos-sdk-interchain-account's People

Contributors

dogemos avatar okwme avatar thunnini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cosmos-sdk-interchain-account's Issues

Discuss security implications of account address

taken from https://github.com/chainapsis/cosmos-sdk-interchain-account/blob/master/x/ibc-account/keeper/account.go#L17-L25:

	account := k.accountKeeper.GetAccount(ctx, address)
	// TODO: Discuss the vulnerabilities when creating a new account only if the old account does not exist
	// Attackers can interrupt creating accounts by sending some assets before the packet is delivered.
	// So it is needed to check that the account is not created from users.
	// Returns an error only if the account was created by other chain.
	// We need to discuss how we can judge this case.
	if account != nil {
		return nil, sdkerrors.Wrap(types.ErrAccountAlreadyExist, account.String())
	}

I don't think it should be a problem to allow the account address to already exist. In fact you may want to send money to it beforehand so you know it can start executing transactions from the get go. A bit like you need to send Ether to a contract based wallet on Ethereum.

The risk that I don't fully understand is how likely is it to brute force account generation with the Interchain Account module in order to get a collision on a PK controlled account with funds. This seems close to impossible if it is being prefixed by a hash of the port and channel. On top of that a salt is being used for the account (althought I might want to make a suggestion to remove the salt and allow the sending chain to be more specific about doing it's own namespacing. I haven't looked into the accountAddressQueue stuff yet so I'll follow up once I've taken a deeper look)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.