Reading the white paper I faced with the term "the Script", to be more exact it's ScriptPubKey.
So let's say Bob wants to send some bitcoins to Alice. He creates a Transaction, where he specifies the previous transaction and then he should Specify the address of Alice. However, instead of this, he speficies the ScriptPubKey.
The ScritpPubKey contains the address of Alice, but it also contains some instructions to run a VM(?) using some Stack.
So my questions are:
1) Where this VM is located ? Is it just the Alice's computer? And what is meant by "Stack"? - the usual programming Stack or something else?
2) What are these instructions and why they need to be placed into the Stack? I checked some commands they are a kinda similar to the commands of assembler language: put some number into stack, etc.
3) The definition says that Alice can spend these money only if the Script gets successfully implemented. But how the others know that Alice successfully implemented the Script?
All the network can see the transaction: Bob send 1 BTC to Alice.
So all the network knows that Alice possesses 1 BTC.
it means that even if a bit coin wallet requires some condition to use the BTC, Alice can always manually generate a Transaction and spend this BTC she received from Bob.
Did I miss something?