<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.internetcomputer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bogwar</id>
	<title>Internet Computer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.internetcomputer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bogwar"/>
	<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/wiki/Special:Contributions/Bogwar"/>
	<updated>2026-04-09T05:00:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Trust_in_canisters&amp;diff=435</id>
		<title>Trust in canisters</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Trust_in_canisters&amp;diff=435"/>
		<updated>2021-11-11T12:30:51Z</updated>

		<summary type="html">&lt;p&gt;Bogwar: Created page with &amp;quot;== Trust in canisters ==  === Background ===  A key aspect of DeFi and related applications in canister smart contracts is the ability to transfer value, e.g. ICP or Bitcoin....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trust in canisters ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
A key aspect of DeFi and related applications in canister smart contracts is the ability to transfer value, e.g. ICP or Bitcoin.  Such functionality makes trust in canister smart contracts essential. &lt;br /&gt;
How can one ensure that it is safe to entrust ICPs to a canister?&lt;br /&gt;
&lt;br /&gt;
The answer to this question has two separate dimensions: &lt;br /&gt;
i)  confidence that the canister does what it is supposed to do and &lt;br /&gt;
ii) confidence that the canister behavior will not unexpectedly change. &lt;br /&gt;
&lt;br /&gt;
=== The canister does what it is supposed to do ===&lt;br /&gt;
&lt;br /&gt;
The correct behavior of a canister can be checked in two steps. First,  inspect the source code used to generate the Wasm code deployed in a canister to ensure that it implements the expected/claimed functionality, and only this functionality.  Second, ensure that the Wasm module the canister runs, has indeed been generated from the claimed source code. &lt;br /&gt;
Here, reproducibility of the build is crucial: the developer should have constructed the Wasm module so that precisely the same Wasm can be rebuilt from scratch. The user can then compare the hash of the rebuilt Wasm module with the module hash  reported by the IC. &lt;br /&gt;
Developers and users can find guidance on ensuring reproducibility in Reproducible canisters. &lt;br /&gt;
&lt;br /&gt;
=== The behavior of the canister cannot unexpectedly change ===&lt;br /&gt;
&lt;br /&gt;
Canister smart contracts are deployed and managed by controllers. Among other capabilities, controllers can change the code for the canisters which they control so canister code is mutable, unlike other smart contracts on other blockchains. For critical applications like those used in DeFI, mutability can be dangerous; the controller could change a benign canister into a canister that steals ICP. Below we outline some options available to developers on how to verifiably restrict mutability. &lt;br /&gt;
 &lt;br /&gt;
===== Complete immutability =====&lt;br /&gt;
Below we discuss  several options available which would turn a canister into an immutable object (as far as code updates are concerned).&lt;br /&gt;
&lt;br /&gt;
The simplest option is to make the canister immutable by removing its controller. A user can verify the list of controllers for a canister using dfx. For example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
dfx canister --no-wallet --network ic info ryjl3-tyaaa-aaaaa-aaaba-cai&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will return the list of controllers for the canister with principal ryjl3-tyaaa-aaaaa-aaaba-cai (in this example, the ledger canister).  If the controller list is empty then the canister is immutable. &lt;br /&gt;
&lt;br /&gt;
Immutability can also be achieved by setting the controller of a canister to be itself. In this case, however, you need to carefully verify that the canister cannot somehow submit a request to upgrade itself, e.g. by issuing a reinstall request.  Here, code inspection and reproducible builds are crucial.  &lt;br /&gt;
&lt;br /&gt;
Finally, a somewhat more useful solution is to pass control of the canister to a so-called  “black hole” canister. This canister is itself immutable (it has only itself as controller)  but allows third parties to obtain useful information about the canisters the black hole controls, such as the available cycles balance of a black-holed canister. An instance of a black hole canister  is e3mmv-5qaaa-aaaah-aadma-cai which is thoroughly documented here. &lt;br /&gt;
&lt;br /&gt;
===== Governed mutability =====&lt;br /&gt;
&lt;br /&gt;
A more complex but powerful approach is to control the canister via a distributed governance mechanism.  One can imagine different levels of complexity and control that such a governance mechanism may implement.  An example is the (upcoming) SNS feature which allows developers to set the controller of their canister to some governing canister. Needless to say, the trust requirements are moved to the SNS controlling the canister where all of the considerations regarding code inspection and reproducibility apply.&lt;/div&gt;</summary>
		<author><name>Bogwar</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Canister_smart_contract&amp;diff=434</id>
		<title>Canister smart contract</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Canister_smart_contract&amp;diff=434"/>
		<updated>2021-11-11T11:50:25Z</updated>

		<summary type="html">&lt;p&gt;Bogwar: Created page with &amp;quot;* Trust in canisters&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Trust in canisters]]&lt;/div&gt;</summary>
		<author><name>Bogwar</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Internet_Computer_wiki&amp;diff=433</id>
		<title>Internet Computer wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Internet_Computer_wiki&amp;diff=433"/>
		<updated>2021-11-11T11:49:22Z</updated>

		<summary type="html">&lt;p&gt;Bogwar: /* For dapp developers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the Internet Computer Wiki!&amp;lt;/strong&amp;gt; Feel free to join in. All are welcome!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Topics Central =&lt;br /&gt;
&lt;br /&gt;
* [[Internet computer]]&lt;br /&gt;
* [[Index of dapps on the Internet Computer]]&lt;br /&gt;
* [[ICP token]]&lt;br /&gt;
* [https://dashboard.internetcomputer.org/ Internet Computer dashboard] &lt;br /&gt;
* [[Internet Computer Performance]]&lt;br /&gt;
* [[DFINITY]]&lt;br /&gt;
* [[Custody, Staking, and Voting]]&lt;br /&gt;
&lt;br /&gt;
== For blockchain &amp;amp; crypto enthusiasts ==&lt;br /&gt;
* [[Myths and facts]]&lt;br /&gt;
* [https://www.reddit.com/r/dfinity/ r/dfinity]&lt;br /&gt;
* [[How to stake on the Internet computer]]&lt;br /&gt;
* [[Tokenomics of the Internet Computer]]&lt;br /&gt;
* [[Governance of the Internet Computer]]&lt;br /&gt;
&lt;br /&gt;
== For dapp developers ==&lt;br /&gt;
* [[Internet Computer for dapp developers]]&lt;br /&gt;
* [[Best practices for NFT drops]]&lt;br /&gt;
* [https://forum.dfinity.org/ IC community developer forum]&lt;br /&gt;
* [[Canister smart contracts]]&lt;br /&gt;
&lt;br /&gt;
== For computer scientists ==&lt;br /&gt;
* [[The Internet Computer for Computer Scientists]]&lt;br /&gt;
&lt;br /&gt;
== For node owners ==&lt;br /&gt;
* [[Internet Computer for node owners]]&lt;br /&gt;
&lt;br /&gt;
= FAQs =&lt;br /&gt;
&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Computer Scientists FAQ&#039;&#039;&#039;&lt;br /&gt;
* [[The Internet Computer for Computer Scientists]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using the wiki ==&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;br /&gt;
&lt;br /&gt;
Use this page to test editing&lt;br /&gt;
* [[Test editing the Internet Computer Wiki]]&lt;/div&gt;</summary>
		<author><name>Bogwar</name></author>
	</entry>
</feed>