# RIP-7614: Expose call stack to contracts

**URL:** https://research.arbitrum.io/t/rip-7614-expose-call-stack-to-contracts/9575
**Category:** Uncategorized
**Tags:** nitro
**Created:** [February 17, 2024, 12:37am UTC](https://research.arbitrum.io/t/rip-7614-expose-call-stack-to-contracts/9575 "2024-02-17T00:37:45Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![canercidam](https://yyz1.discourse-cdn.com/flex029/user_avatar/research.arbitrum.io/canercidam/32/7068_2.png) [@canercidam](https://research.arbitrum.io/u/canercidam)
#### Post date: [February 17, 2024, 12:37am UTC](https://research.arbitrum.io/t/rip-7614-expose-call-stack-to-contracts/9575/1 "2024-02-17T00:37:45Z")

</div>

Hi everyone!

We would like to present you our new Rollup Improvement Proposal RIP-7614, which suggests implementing a call stack that contains opcodes, addresses and function selectors, and exposing through a precompiled contract interface.

> <https://github.com/ethereum/RIPs/pull/10/files>
>
> https://ethereum-magicians.org/t/rip-7614-expose-call-stack-to-contracts/18535

Here is the original Ethereum Magicians thread in case you would like catch up with our community discussions so far:

> **[RIP-7614: Expose call stack to contracts](https://ethereum-magicians.org/t/rip-7614-expose-call-stack-to-contracts/18535)**
>
> Hi Magicians! 🧙 🪄 We would like to propose an improvement to increase visibility in L2 EVM execution. RIP-7614: Expose call stack to contracts What are the proposed changes? We propose a new call stack implementation to record opcodes,...

- This improvement is rooted in the authors’ common goal to prevent smart contract exploits.
- Transaction screening is an emerging and promising exploit prevention approach. Here’s an example - a DeFi protocol may screen incoming transactions against a negative reputation list and/or for anomalous activity outside of normal user behavior, and revert transactions deemed malicious.
- Unfortunately, transaction screening techniques are susceptible to evasion. DeFi protocols only have visibility into `msg.sender` and `tx.origin` fields of a transaction, meaning hackers can hide behind various proxies.
- The call stack precompile levels protocols’ transaction visibility with attackers, exposes hidden attack contracts and helps reason better about the patterns.

We believe that this is a critical leap forward in implementing effective screening solutions and protecting protocols from attacks on L2 chains, and for this reason we find Arbitrum’s adoption of this proposal very valuable.

We are curious to know what you think of this proposal and discuss!

---

<div class="post-metadata">

### Author: ![canercidam](https://yyz1.discourse-cdn.com/flex029/user_avatar/research.arbitrum.io/canercidam/32/7068_2.png) [@canercidam](https://research.arbitrum.io/u/canercidam)
#### Post date: [February 17, 2024, 12:38am UTC](https://research.arbitrum.io/t/rip-7614-expose-call-stack-to-contracts/9575/2 "2024-02-17T00:38:18Z")

</div>

We made the reference implementation on top of the original go-ethereum repository:

> <https://github.com/ethereum/go-ethereum/pull/28947>
>
> Reference implementation of https://github.com/ethereum/RIPs/pull/10
