A machine readable medium comprising instructions for updating a programmable device that is part of a computer network including multiple interconnected programmable devices, the instructions, when executed by at least one processor of the programmable device, cause the at least one processor to at least: commit, to a distributed ledger, a first configuration of a computer program installed on the programmable device, the distributed ledger on at least two of the multiple interconnected programmable devices and the distributed ledger based on a blockchain; receive a first request to apply a first update to the first configuration of the computer program and a second request to apply a second update to the first configuration of the computer program; generate a second configuration of the computer program based on the first update and the first configuration of the computer program; commit the second configuration of the computer program to the programmable device; commit the second configuration of the computer program to the distributed ledger; determine a latest configuration of the computer program by examining a most recent block of the distributed ledger; verify a non-existent status of the first configuration of the computer program on the distributed ledger based on the latest configuration; prevent the second update from being applied to the first configuration of the computer program; in response to verifying the non-existent status of the first configuration of the computer program on the distributed ledger, generate a third configuration of the computer program based on the verification, the third configuration to be generated based on the second update and the second configuration of the computer program; commit the third configuration of the computer program to the programmable device; and commit the third configuration of the computer program to the distributed ledger. commit, to a distributed ledger, a first configuration of a computer program installed on the programmable device, the distributed ledger on at least two of the multiple interconnected programmable devices and the distributed ledger based on a blockchain; receive a first request to apply a first update to the first configuration of the computer program and a second request to apply a second update to the first configuration of the computer program; generate a second configuration of the computer program based on the first update and the first configuration of the computer program; commit the second configuration of the computer program to the programmable device; commit the second configuration of the computer program to the distributed ledger; determine a latest configuration of the computer program by examining a most recent block of the distributed ledger; verify a non-existent status of the first configuration of the computer program on the distributed ledger based on the latest configuration; prevent the second update from being applied to the first configuration of the computer program; in response to verifying the non-existent status of the first configuration of the computer program on the distributed ledger, generate a third configuration of the computer program based on the verification, the third configuration to be generated based on the second update and the second configuration of the computer program; commit the third configuration of the computer program to the programmable device; and commit the third configuration of the computer program to the distributed ledger.