Interchain Academy (Cosmos) #598
Replies: 7 comments 12 replies
-
There is a screening test, done by https://www.hackerrank.com
|
Beta Was this translation helpful? Give feedback.
-
Just based on the duration and format of the course, it would seem to me that theirs is much less intensive than PBA. I'm curious just how people learn effectively online, as we've seen engineers with many years of experience still struggling in person at previous PBAs. How do they assess students' progress? I'm also interested to know just how they introduce IBC, since they don't have anything similar to XCM, but rather create message format standards for each and every use case, such as ICS-20 for fungible tokens and ICS-721 for NFTs. I'm sure that there is an interface where we can just purely send a blob of data to another chain (perhaps that's the packet API?), and with that, we could also try sending XCMs using IBC. |
Beta Was this translation helpful? Give feedback.
-
Just providing updates of the progress and layout of this academy: I think their whole academy might be publicly accessible here: https://ida.interchain.io
|
Beta Was this translation helpful? Give feedback.
-
First day of classes today:
|
Beta Was this translation helpful? Give feedback.
-
It looks like their academy is built and run by a third party: https://b9lab.com/ These are the folks who seem to be coordinating everything, creating a gitlab for project submissions, etc... |
Beta Was this translation helpful? Give feedback.
-
I would love to hear your feedback about participating in this in Lisbon. As for things like discord, once PBA is a separate entity, it would be free to switch to a new messaging platform. |
Beta Was this translation helpful? Give feedback.
-
They have released their final exam today. Here is the readme for that project: Project descriptionYou should read this whole page before attacking the problem, including the part about Docker and your working copy. This is the beginning of a larger project dedicated to the future payments of toll roads. The project, built with Ignite 0.22.1 and CosmJS 0.28.13, is far from complete. However it already contains:
Do nowBefore doing any work, and before you forget, do these steps:
This is not to save you time. Instead this is to save you mistakes and surprises down the road. Your workThe following steps are in order of increasing difficulty:
The tests have been divided into different packages to avoid compilation errors while your project is incomplete. On system infoAdjust $ go test github.com/b9lab/toll-road/x/tollroad On road operatorsWhen a road operator is created, its ID has to be taken from This is what you have to implement:
To confirm, run: $ go test github.com/b9lab/toll-road/x/tollroad/roadoperatorstudent Look into the On user vaultsThis part requires more work. With the operators in place, it is time to move your attention to the users of the road operators. Users are going to keep some tokens in escrow with the operators. The idea is that road operators will eventually be allowed to transfer to themselves some of the tokens that the users have put into escrow "with them". To keep track of which user has put how much of which token denomination in escrow with which operator, you have to add a new type named The user vault object has exactly 4 fields, not less, not more. In Protobuf it should be: message UserVault {
string owner = 1;
string roadOperatorIndex = 2;
string token = 3;
uint64 balance = 4;
} The user vault object's key in the map is the combination of, and in this order, func (k Keeper) GetUserVault(ctx sdk.Context, owner string, roadOperatorIndex string, token string) (val types.UserVault, found bool) In effect, Additionally, the message to create this vault object should not have the message MsgCreateUserVault {
string creator = 1;
string roadOperatorIndex = 2;
string token = 3;
uint64 balance = 4;
} It should not be allowed to create another user vault with the same key of Similarly, the message to update the vault picks the owner in the message MsgUpdateUserVault {
string creator = 1;
string roadOperatorIndex = 2;
string token = 3;
uint64 balance = 4;
}
And again, the message to delete a vault: message MsgDeleteUserVault {
string creator = 1;
string roadOperatorIndex = 2;
string token = 3;
} With these objectives in mind, your tasks are as follows. Scaffold the typeSo your first task is to add a new mapped type named
Handle tokensWith the data structure, the keeper and the messages stuff done, your second task is to handle the tokens by calling the bank. We have prepared mocks in
With this done, apply what you learned in the course so that:
Checking it allTo confirm, run: $ go test github.com/b9lab/toll-road/x/tollroad/uservaultstudent The tests are in two files:
Check in these files to see the details of what is expected. On CosmJSStart by compiling the Protobuf files into Typescript.
$ docker run --rm -it exam_i protoc To confirm that you generated the correct Typescript files, confirm there are no compilation errors in With the objects created, you can move to the task of filling in the missing parts in the following files:
At the core, the tests are regular NPM tests: You need to run $ ./testing-cosmjs.sh It starts an Preparing your working copyThis is your personal repository, it is named like To prepare your working copy:
After the submission deadline, we will run the tests on your latest version of the If you wish to use the SSH protocol instead of supplying your username and password over HTTPS to perform Git operations like clone/pull/push, you can learn how to handle SSH keys and add your SSH keys here. Looking at test filesMake sure you read the section about Docker before you jump into running anything. For your convenience, here are the $ go test github.com/b9lab/toll-road/x/tollroad
$ go test github.com/b9lab/toll-road/x/tollroad/roadoperatorstudent
$ go test github.com/b9lab/toll-road/x/tollroad/uservaultstudent Each of them is actually launched from a script, respectively: $ ./x/tollroad/testing.sh
$ ./x/tollroad/roadoperatorstudent/testing.sh
$ ./x/tollroad/uservaultstudent/testing.sh Inside each of them you can see how much weight is given to each test. The NPM tests are launched from In turn, these 4 $ ./score.sh When FS_SCORE:4% This is your score as we will record it. Inside You can run these scripts (inside Docker or not, see below) as many times as you want, and see what score that would give you. We do not track how many times you run them and do not keep a score on our end when you run them. Passing all tests gives you 100%, passing none gives you 0%, and from the start you get 4%. Passing a single one gives you a score that depends on the weights applied. How do you test the outcome? That's the object of testing it in Docker. The paragraphs also discuss read-only files. Running tests in DockerThis is the right way to run the tests, as it will let you test the outcome just the way we will test it after you have submitted your work to us. Install Docker. This project was actually built within a container described by the Docker file
Notes on
Now, if you want something more permanent to debug your code:
It is possible that you could do without Docker if you have all the right tools and versions installed already. But better use Docker and Official gradingTo grade your project, we run the same
Have a look inside the After the submission deadline, we will make sure all Submission checklistBefore you consider your work done, check everything off this list:
Cleanup
Please do not publish your solution to the outside world so that we can reuse the exercise or parts of it. Good luck. |
Beta Was this translation helpful? Give feedback.
-
I am thinking about signing up and take the Interchain Academy, which seems to be an online course for learning about developing on Cosmos.
https://academy.interchain.io
Beta Was this translation helpful? Give feedback.
All reactions