# Smart Contract Programming Language and Layers

The Bitcoin Spark layered smart contract execution system will be compatible with two different programming styles, both high-level and low-level languages.

Bitcoin Spark network will allow for smart contract deployment in the EVM-compatible languages Solidity and Vyper, or any other high-level language compilable to EVM bytecode. A parallel layer will also allow for the deployment of contracts in Rust, with integration to allow transaction settlement on the main Bitcoin Spark network. This permits a wider variety of developers and smart contract styles to be on the Bitcoin Spark network, promoting innovation and a wider scope of technical systems.

{% hint style="warning" %}
*Solidity opcode variances are currently unconfirmed. Any incompatibilities will be confirmed on the devkit release.*
{% endhint %}

The layered system allows multiple language implementations as per the below diagram:

<figure><img src="https://3217825125-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fj9hEk9kiY8ArikdUCqnJ%2Fuploads%2F96R6GTA8KsSaUY2vWHje%2FLayers%20BTCS.png?alt=media&#x26;token=1df3582e-3f79-4508-9daf-fc0a60d225c8" alt=""><figcaption></figcaption></figure>

These separate contract execution systems with singular network finality will create a diverse and thriving ecosystem of applications and smart contracts relevant to many use cases.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bitcoin-spark-foundation.gitbook.io/bitcoin-spark-whitepaper/core-blockchain-function/smart-contract-programming-language-and-layers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
