Loading video player...
Okay, nice. I think we have a new link
for YouTube. I'm just going to share it
with the people who are waiting on the
Luma.
>> Okay.
>> Yes.
Okay,
cool. I think we are live. I'm going to
share the link with people on
Relax.
Yes.
>> All right.
I'm almost done on my end here.
>> Cool. Awesome. I think we can get it
started. The YouTube link was I don't
know. There was some problem with
YouTube. So, I changed the link. I
updated on Luma as well. So, you might
get a notification like everyone who's
watching. But we are already live on
Twitter and LinkedIn as well.
>> Nice.
>> Of course, why not? Yeah. So there are
like 100 people watching right now. I'm
assuming a lot of people will join
later. But hey everyone, thanks for
finally uh joining. I'm really excited
about today's stream because I think
after once I'm so excited about the new
protocol that is coming in there was so
many good features and you know uh and
today we are going to discuss Tempo. So
if you don't know Tempo is the new EVML1
the blockchain designed for payments and
um yeah we are just going to wait for a
few more seconds. Actually not we can
just get started. So today our special
guest is Andrew and Andrew is the if you
don't know he's the co-founder of Herd
and before Herd he was at Dune and he is
a very famous and my favorite technical
content creator in the space. So if you
don't follow him on Twitter go and give
him a follow. Uh thank you Andrew for
joining. How's it going?
>> Thank you. Thank you. I'm back back at
my childhood home in LA for for this
week. So that's why my Wi-Fi Wi-Fi might
be a bit slow. Video's off so people get
to see my PFP. Uh but I'm normally I'm
not trying to be an or anything. My face
is already my face is already out there.
>> Yeah. Yeah. If you want to see Andrew,
go to his Twitter and, you know, listen
to his talks. He gave a good talk this
year at Dune Con, so go and listen to
that.
>> Yeah. Yeah. Yeah. Yeah. Yeah. Uh
>> okay. Yeah. Let's get started. Uh so
just the agenda for everyone. Um we are
initially I'm just going to start with
the quick overview of the features of
like the tempo and what they are trying
to build and then we will play with it
and try to like deploy a token and you
know a stable coin because of course it
is a stable coin focused chain. We will
explore their new features like native
account abstraction. Tempo has their own
explorer like they built their whole new
explorer. So we are also going to check
that out and we will try to see what
breaks what is working. It's a EVM chain
but there are few differences as
compared to current EVM chains right and
the chain is very much focused on stable
coin payments and it is engineer it is
engineered in such a way and these
features that I'm talking about like
native account extraction and new uh
token standard they are available at the
protocol level so that you know
developers can focus on building the
application instead of you know building
around the infrastructure like as of now
if you're building an EVM you will need
a different account obstruction provider
and a different guest sponsorship person
like infrastructure provider but
everything is built in in the in the
protocol itself with the tempo so Andrew
you want to take this stage and share
your screen yeah sounds good let me just
make sure I don't
share anything I'm not supposed to All
right cool so yeah tempo So, testNet
was, you know, I think it was a week
ago, two weeks ago. Um, and they have
great docs, but there are
there's a lot of things here in protocol
specs um that are somewhat different
from how normal normal not normal EVMs
work, but extends off of the normal
EVMs. Um, and so anyone who's I think
Tom mentioned try to follow all the
different account abstraction standards
or token standards or all that stuff.
Um, you know, it's usually pretty
confusing to navigate. Um, so I'm just
going to set the stage first by actually
just starting with the new transaction
type. I think this is the not the
easiest place to start, but I feel like
a lot of times when you have like 15 or
20 new concepts, you kind of need like
one concept to anchor to um as you learn
the other ones. Otherwise, it's kind of
like, oh, how does like tip 20 play with
fees, play with like the fee decks or
stablecoin decks or or block space and
all of that, right? So, I think if
you're reading about tempo, I would
honestly start start here. Um, and so
this main change is I'm just going to
specification. Um, is that there's this
new um, tempo transaction which has
types, right? And Ethereum transactions
always have types. Um, I think, uh, I'm
going to bung it up. I think we have
three Ethereum types right now. Uh,
Ethereum transaction types. I think
there's three. Legacy. Yeah, there's
legacy. There's Oh, I'm very wrong.
There's five. um I guess existing types
right so a lot of these types basically
introduce some changes to how uh you
submit transactions right which has
implications on wallets as well as on um
RPCs uh because there has to be
standards for how something how data is
structured when it's submitted um and so
yeah you see legacy types are here um
and then 209030 which has access list
has has a different type uh EIP559
which was from 20 what is this 2021 now
I think um this has type two um uh this
one's less important to us right now but
it's important to roll up people um and
then 7702 transactions was the newest I
think that was May this year which
allowed you to delegate your um your
wallet to a contract right so you can
turn any EOA into a smart a smart
contract account essentially without the
4337 approach. Um, and so yeah, this is
all a lot harder to follow when you're
just um reading, right? Uh, so I
normally always like to explore by
pulling up an explorer and then also um
pulling up the the alchemy dashboard for
for testing things out. This is like
anytime someone's a comes in as an
analyst or data engineer and they're
like I want to learn crypto data or like
I want to learn how to build crypto
apps. I'm just like okay do not start
with like GitHub or Dune or like
something you saw on Twitter. literally
come to the sandbox and get familiar
with the RPCs because if you don't
understand this, you'll have no idea
what you're building on top of in and
like it doesn't matter if you're a data
engineer, app dev, um maybe first lady
dev is a bit different, but you know, um
I've I've used this dashboard for five
years. It's changed a lot, but it's it's
just been mainly the same where you
select your your your chain and then
you'll have uh you know probably a
hundred or so different um RPCs here,
right? And these are all standards.
Yeah. Um
so let's actually I mean we could just
start with the tempo explorer actually.
>> Um so if I just
go to here, copy this hash in we can
start simple. We can do a get
transaction by hash.
And if I put this in here and I send the
request, you'll see uh this type is
actually legacy
um based off of here.
And let's actually this this now gets
into the the fun part of I am not
expecting everything to work
immediately. Uh I think part of the
things that happen when you're creating
a new standard uh when you have a new
transaction type is it has to be
supported across obviously the chain the
R the uh the explorers the RPCs etc. U
so I think for today's stream we're very
much like we're testing things out and
seeing what is expected or unexpected.
Um so I would have expected that this
type was 076.
Um, but I guess that maybe for Tempo,
especially from their docs, they maybe
they default. Oh, yeah. They actually
say it says legacy here. I'm done. Um,
so it's interesting. So I think I can't
tell if this is from their docs or not.
So let's actually The nice thing about
Tempo Docs is that you can actually
deploy or interact with the chain from
the docs. Um, so I'm trying to remember
where
let's see if I can find it. They let you
create a stable coin straight from the
docs. Here we go. All right. So, I can
sign in. Please don't dox me. All right.
Uh great.
Now everyone knows my password length.
Very fun. Um,
let's just call this Am I allowed to
call this alchemy? Probably not.
Call it all good. Um,
so I'm deploying a a transaction from
their docs because I'm curious. Yes.
Okay. So from their docs, the
transaction type is 076. So if I plug
this in to here,
uh, I should be able to see. Yes. Now we
have this new this new type here. All
right. Um, and again, you could you can
always see it defined in here already.
This is this is Rust in case you're
curious what what the hell pubstruct is.
I think this is Rust, right?
>> Yeah, this must be Rust.
>> Um they love Rust. But I always prefer
to go from docs to onchain as fast as I
can. So I'm now looking here and I can
see all right, let me side by side put
this transaction with um what I see here
because there might always be things
that just aren't shown in the explorer.
Um, so something else that I might want
to do is I actually want to um
put these side by side. So this was a
legacy transaction, right? Yeah. So I'm
actually going to go and put this one in
as well. Um, and there's a few ways of
going through this. One might be I just
copy both of these into chatbt and have
it explain to me the differences. Um,
but since I've already read the docs,
there are two key things I'm interested
in. Um,
the key authorization doesn't matter to
me right now that much. There were
changes in how you can sign things that
extend thing the capability of the
chain, but we're not going to talk about
that now. The main difference is this.
Um, you now have this calls array,
right? And for calls, you can see two
value, input, and data. Um I actually
didn't know about this data field
before. Was that in the docs?
Uh
vec call. Ah their docs are out of date.
So there's two value input. Um I see
data here. Uh my immediate question is
now is this a duplicate from the RPC
where input it was named data at some
point and then it got replaced to be
called input because that is what input
used to be called or input is called on
legacy transactions and data was not
deleted from the RPC or is this
something where data does exist here but
it's just not updated in the docs. Um,
so that's a question from my end and I
don't see a link to the repo for this
transaction type. I'm sure there's
>> right a Rust implementation. There it
is. It'd be nice if that was just here.
Like as as as someone who's been a
Devril, there are two things you learn
about documentation. One is no one reads
the overview page. Everyone skips to
subpage. And rule two is if there's more
than three or four things here, no one
reads it. Um, so anyways, so this is
temp transaction. Um, so they really
need like GitHub needs a chat just right
here. The co-pilot should be here. Uh,
calls call
>> uh pubstruct call
>> value input. Okay, so it's not in here
as well. So it's not that they forgot it
from the docs. This just seems like an
RPC problem which might be from from
refu uh or or from alchemy, who knows?
Um but anyways, point being this
shouldn't be here. Um and now if I go
back to what's different. Um so
transactions typically always have you
call a specific two address uh with some
value where value is like the ETH or the
native chain value uh or the native
chain token value. Um, and then there's
input, which this is how you actually
call a contract where the first four
bytes are the function signature, right?
So, there might be I don't know, this is
an uh an ERC20. I know it's a TIP20, but
it's like ERC20 token that has like a a
transfer function. This doesn't look
like the transfer um function signature,
but anyways, you have a transfer
function, and then there's bytes here,
32 bytes per argument. Um so it might be
like oh I'm transferring from my address
to another address. Um right and so big
difference now is
with this new transaction type you can
actually bundle multiple calls. Um which
we will actually do in a second. I'm not
going to do it right now. Uh but now
that actually is a structure that comes
from not comes from but is native to
Salana. Um so
let's see if the Salana documentation
has improved at all.
Okay. Yeah. So in Salana they call the
transactions messages and when you send
a message you have this vector of
instructions um which can I find it
here? Yes. So you can see for for Salana
uh there's a set of instructions that
has a program ID uh and accounts which
you can think of as
as the two basically and then you have
data which is input for us right um so
on Salana all transactions have always
been like multicall batched um but on
Ethereum if you wanted to batch
transactions you always had to use like
a multiall 3 um like a contract that has
um a contract that has an execute
function on it or multi call whatever
what oh I guess they have an aggregate
here uh but normally it's you see
execute or aggregate or something this
is common on like 772 or 4337 contracts
for 4337 it's called handle user ops but
it's essentially an array of call data
um and so this is one of the biggest
changes that they've made is instead of
expecting
people to use like account abstraction
where you have to create a smart account
wallet which is another contract or
delegate your current wallet to a
contract which is 7702 you now natively
get this batch execution um here right
and there's a lot of benefits to this
one of the main ones is for things like
the the classic I want to uh swap a
token but I have to approve before I
swap and that requires the user to sign
twice uh now this is only signing once
Right? And you know, there's stuff like
5792 for getting around signing multiple
transactions, but this is a much cleaner
way of of solving this problem. Um, and
so I'd say this is one of the main
differences that will affect devs,
probably affects RPCs. Um, and then
also,
um, just just the devx of and UX of
apps. Um, the other big thing that's
changed. All right. Sorry, we don't I've
not let you talk at all. I've just been
rambling. No, no, it's fine. You can
just go ahead. I was also talking about
there is one more method which is the
ETH get balance one which might break a
lot of changes because you know Tempo
doesn't have like a native token, right?
>> That's a good call. Let's see what
happens.
>> Yeah. Yeah. Actually, yeah. Yeah. If
you're going to call it, uh, as far as
my research, you're going to get like a
big hex number. So, let's do it.
>> Yeah. Let's see. So, the one that my
smart account
is tied to,
oh, UX thing. You should always be able
to copy any of these just with a click.
Um,
so now if I go here, if I go here, get
my balance, I see this, which I can just
take into
this place here. I'll swap these around.
convert.
>> What the hell?
>> Yep.
>> Yeah. So that they did it on purpose
just because they wanted to like make
sure that there is something there like
a large number, right? So this will like
break a lot of wallets cuz the entire
logic of wallet is that it checks the
accounts that if they have the native
balance or not, right? And if you don't
have it and if there is nothing, if
there is a big number and it's it's
returning a hex decimal, right? So,
>> y
>> the wallets are going to break,
>> I think it would actually have been
better to just set this to zero. Um,
setting it to a high number breaks more
things than setting it to zero. Um,
because I'm just thinking from
everything from like simulations to like
balances. It's like a lot of apps are
built around like oh if their balance is
zero um
there's probably some warnings and stuff
that come up.
>> Uh fair but if you if you set it to zero
then if if I'm if my account is trying
to do a transaction and it it checks
that my native balance is zero then how
am I going to perform a transaction?
>> Right. Right. Right. Right. I mean that
that also gets into I'm very curious how
let's see let's let's start getting more
advanced now. So I used AlphaUSD
for creating this token. If I go to my
balances I'm guessing was this
sponsored.
Can I see if who paid this?
How do I see who paid
>> in the explorer?
>> Yeah.
>> I don't I don't think I saw it here.
transaction fee. It doesn't tell me. It
doesn't tell me who paid my fee because
I'm looking here and then I'm looking at
my I was looking at the hash. If I look
at my account,
okay, I have some I formal alpha USD.
So, I have AlphaUSD, Path USD, which is
their native routing token, Beta USD,
Theta USD. Um,
okay. And I'm guessing this is
>> by the way for for the users who are
joining now, Tempo has this feature
because they don't have a native token.
So you can literally choose your token
that you want to pay fees in. And most
of them are going to be like stable
coin. You can go to their docs and you
can check out like how the gas system
works. But mostly just to give you a
TLDDR, they don't have native stable
coin. Uh you can choose your uh stable
coin of what you want to choose for
paying the fees. Yeah. Yeah. Um, and
that's one of the things I want to play
with is So, also this should show me
address or something on hover. Um, so I
have AlphaUSD. It'd be interesting to
see what happens or how we can pay with
Beta USD. Um, because then that should
go through their fee decks. Um, which
I think you always have to pay with a
stable coin. Do you have to pay with a
stable coin? Must be a USD native tip. I
actually don't remember if for FMM
the the token you're paying the fee with
if it has to be a stable coin or not. I
remember because one of their
>> does it it doesn't say here.
>> Yeah.
>> Fe specification
>> a tip is are tip stable coins or they
just
are they
>> no tip is like a standard like ERC
standard. I know that but because in
here in the docs all they say is you can
pay with any tip token right
>> um
>> but whose currency is USD so which means
a stable coin now
>> well I think it's just quoted in USD it
doesn't say exactly
>> interesting
>> that it's a st as long as that stable
coin who's currently as long as that
stable coin uh so that that grammar here
suggests that every tip is a stable
coin. Um,
which this gets into we we should write
a running list. But here, this is a good
time for us to actually run into code
now that we've uh been yapping enough.
Uh, I already have.
Um,
and yeah, I have no idea how long we're
going to go, but we have a lot to test
out. So, we already tested seeing a 076
transaction and compare it to legacy.
Um, some things we want to be able to
see is like tip20, how to see quote and
liquidity. Um, because the dexes are
um
the dexes are in pre-ompiles. So, you
don't have read functions. I think in
the same way of like if I was on unis
swap I'd have a read function for
getting the square root price or um you
don't have a read function for well yeah
you do have a read function for getting
like reserves and stuff u but I actually
don't know how we see that in um tip20s
with fmsmms
um so that'll be interesting to see are
tip20s stable coins always
um so we have that we want to trust test
sending a transaction with two transfers
and using uh
what was the other token? I have beta
USD. Let's try using beta USD.
Um which
which is
this one.
Um and then test reading traces
from this transaction.
All right.
Um and if we have time test calling the
pre-ompiles directly. Um so the way
these dexes work is there are
pre-ompiles. I don't know if I can find
a transfer here. Let's see if we can
actually find the the pre-ompile
address. Do you do you have the
pre-ompile addresses
account keychain? No.
They must have like some page that's
like hey here are all like deployments
page that's like here are all of the
pre-ompile addresses
right
>> it's not in the docs should be
>> I don't I don't see it this
>> actually show a page
>> I see this I fe Oh this is fee manager
is that the same as the feed dex
no feem contract is different
from
>> FedEx.
>> Feedex.
Let's see. I need to open my phone with
the with the um
with the chat with the tempo devs.
Yeah let's
>> where are the pre-ompile
addresses for the fem and stable?
Well,
need a
compile and
list. Uh
>> yeah for for also the people joining
joining now and also if you don't know
what tip20 is so tempo is as I said it's
a new EVML1 so they launched their own
token standard so it is extending the
current ERC20 token standard so Ethereum
has this ERC token 20 standard right and
which according to us is also like very
old according to me at least and there
are some problems with it and tempo is
like extending that standard and also
adding some new features, some new
methods to make sure that it is very
stable coined.
How do I say that? Very stable coined
aligned or
>> friendly.
>> Yeah, stable coin featured. Yeah. So,
there are like multiple features.
>> Sorry.
>> Sorry. Go on. No, I was just making sure
I was going to leak one of my cues.
Tempo test.
>> Oh,
>> I'm just going to start.
>> Yeah,
>> I'm going to just use it. Sorry. Go on.
>> No, no. Maybe I can just also share my
screen on the side.
Go for it. Um,
I'm going to need both of these.
All right,
we're going to set this in here.
uh
doesn't really matter that I'm doing
this because uh
this is all this will be deleted
anyways. Um, and now we can use cursor
and say, "Hey, can you try and set up a
Oh, how am I going to do this?" All
right. Well, we'll see.
Submit transaction to the tempo rece.
Um
or I'm just going to give it
this
with type USX2. Let's just try a basic
transfer of one token of
uh
let's just try transferring alpha USD
to
and let's just transfer it to oursel for
now. Where's my address? This is my
address.
Um,
by the way, we are V coding and trying
to do some transactions and see what
breaks.
>> I'm realizing one
>> one problem I have is
I can't export
I don't think I can export this this
this key.
And so, and I also, if I generate a
private key,
>> I don't know if they have a faucet yet.
Oh, get faucet funds. Here we go.
>> Yeah, there is a faucet. Yeah.
>> Okay. Uh,
>> and why don't you why can't you get a
private key? It's your metam mask,
right? Or you just don't want to show
>> Oh, no. like from I meant from the so
they use pass keys I think with Porto in
the docs
>> and I was I was like oh I want to just
use that wallet but I actually don't
know how I don't even know how to
yeah
I don't I don't even know how to pop up
Porto to to see that stuff. Okay. If I
add funds
to here.
Um, and I'm going to just tell cursor
spin up a new you
wallet for me. Just
>> till the time you do that, I'm just
going to take the stage from you. This
>> go for it. Go for it.
>> Okay. Uh, remove Andrew from stage. Add
my screen. So as I was talking about
TIP20 standard uh they have extended the
typical ERC20 standard just so that it
is more stable coin aligned and added
some really good new features. So one of
the features is transfer memos where is
that this one right so with that you can
like enable a 32 byte memo to the
transfer. So imagine like you're doing a
transfer on the blockchain right now
with ERC20 standard there is no way to
like drop a note for the payment
references right any invoice ID or any
note that you want to drop and actually
I've been talking to a lot of devs and
they told me that they need this feature
even on Ethereum because it's very hard
for them to like have a reference for a
particular transaction because if they
want to pass on that transaction to
another service right it it gets very
hard to like customize it Right. So
that's a really good new feature. And
another feature was that usually when
you are deploying a stable coin um like
let's let's say tether right they have
this pause function. So initially like
in the native like the original ERC20
standard there is no such thing as pause
right so you can't pause a particular
address or you can't block a particular
address to do the transaction. So for
that if you want to do that you have to
use something like open zap plane like
an extension to add that particular
function. But with tempo they have
already built in the block function like
the pause function inside the protocol
itself in the inside the standard
itself. So you know you can just
directly use it. Let me go to the code
and show that to you guys. Okay. So this
is the tip uh 20 standard the ERC20
standard again the same and all the
functions are already there and then if
you go down you will see the TIP20
extended function. So here you can see
the memo that we talked about like for
references and I think this is very very
important when you know when you're when
you are especially focusing on stable
coin and you know being probably like
stripe is going to be
I don't know taking in charge and tempo
is going to power stripes transaction so
it's going to be like a very important
feature for them and then the next one
the pause function that I was talking
about is here so you can like pause the
contract and you know block the
transfer. So if you go to any major
stable coin right now on Ethereum or any
chain they have this boss function but
it's not native. They have to use like
an extension to do that and there are
multiple like other features as well
like new features that I think you can
explore. Of course we are not going to
go through all of that. Uh but yeah,
this is like really great and uh you can
explore all of that. Yeah, I think
multiple features of of course we can't
talk about everything but they do have
still they have approval function. I
mean they could have removed that
because approval is such a pain in the
ass. I mean because
>> it's too it's too ingrained.
>> Yeah, it's just such a pain in the ass.
But the problem is what I think so that
they want it to be EVM compatible and as
they wanted to extend the ERC20 standard
they can't get rid of it. So but anyways
they they have native account
abstraction of course 7702
um you know on Ethereum as well. So you
know you can do that but again uh yes
overall I really like this uh tip 20
standard. Uh yes and if there is any new
method that you think is awesome just
maybe comment and we will explore that
too. Uh yes. Are you ready Andrew?
Should I pass on the stage?
>> Yeah, that was that was great. Great
timing for me to fix things up.
>> Okay.
>> Um
>> Okay. You have sharing the telegrams.
You might want to remove that.
>> Yeah. Yeah. Yeah. Yeah. No, I'm closing
this side. So this is a chat. So Alexi
says fee address is the same stable. I
thought that
>> Oh wow. You literally posted in the
Telegram group. Okay, nice.
>> Oh yeah, I will always bother people.
It's what it's their job.
I was pre-compile
not a contract.
Uh stable decks is at zero XDC. All
right. So, we're juggling a few things
at once, but I just want to see this
address is an account.
Interesting. Wait, so is Stableex is a
contract
and VM is a contract? I could have sort
I could have sworn at some point they
said that they were pre-ompiles.
Uh maybe there's pre-ompiles within them
>> or I'm just like
>> or I'm just losing my losing my [ __ ] Um
anyways so
I I added funds to test net to my
account. Um
I think the docs RPC actually lost track
of things. Um, but this transaction
hash, while it says it timed out here, I
do actually have it
here.
Um, so it says that that they minted me
1 mil ALUSD. And so in in my um repo
here, and we'll share this repo after,
uh, I have a generate wallet. This is
literally just for testing. Never
generate your wallet and store it in a
in in any file in a repo. Do not do
this. I'm just doing this for testing.
This is just test net. No real funds
will ever go on here. Please do not do
this. Uh but for testing, it's fine. So,
uh my public address is here. And so now
that I have this alpha,
um yes, yes, yes, yes. Made a mask. I
know you have new features. Okay. Um,
I'm going to Oh, I don't pick I have to
pick the asset before,
dude. Wallet UX
is painful to me. All right, so I need
to send I need to pick
tempo test net.
No token matching your filters.
Excuse me.
Can I not?
Hello. account one.
All right, let's see what's going on
here. Um,
so here sender I need to view the full
transaction. It is sending to me, right?
And I do have 1 mil of alpha USD now
which is at
this address.
However, when I go to transfer
on tempo,
oh, was it just not show? Oh, hey, this
is your this is our friend that you
mentioned our uh giant balance.
>> Oh, yeah.
>> So, it shows up as USD.
>> That's that's fun. It shows up like
that. I can't search the token for some
reason. Um, so
Can I Can I send it to Zerion?
How do I overview explore?
Send.
All right, let's
do they support tempo test net? No, they
don't support tempo test net. Great. All
right. Um,
I don't think I have any way of sending
this.
I don't think I have any way of sending
this to my
uh new generated account unless I export
my Metagmas private key. Um,
so I'm going to stop sharing.
>> Okay.
I think I'm going to take the stage till
now. So you
>> Yeah. Yeah. Take take the stage for a
second
>> while it is not exploited.
>> Yeah. Yeah. Yeah. Yeah. Yeah. I'm not
sharing my screen. Right.
>> Yeah.
>> Okay. All right.
>> Uh
>> that is this is cursed. This is
absolutely cursed.
>> Oh, by the way, okay, no worries. I can
I can take this stage for now. Okay.
Another new feature that I'm excited
about it is the block space. Right. So,
Tempo has this dedicated block space for
stable coins. So, and this is not a new
concept. Uh there is a project called
world chain. World coin if you have
heard of them. Solana also has this
concept of dedicated block space where
the space is reserved for few
transaction in in case of tempo that is
reserved just for staple coin
transaction because they want to focus
on staple coin. uh in comparison to
world chain for example world chain
>> I'll be back in like two minutes a
second
>> okay cool world chain is trying to
create this human proof of human
transaction where you know once you get
identified by their orb you prove that
you are a human with that they are you
know reserving the block space for the
humans right so that is fun right and
similarly tempo is trying to do the same
and uh They have this function. Wait,
wait a minute. Am I on the right do
talk? No. Yes, they have this reserved
block space
for stable coins.
H yeah, this is interesting. And then
another feature was the fees. I think we
have already shared about the FMM Fmm.
So there is this native FMM that
converts automatically converts your
token to the validator's preferred fee
token and eliminating the need for users
to hold any other separate gas token
which is really huge. Of course if you
have been coming from the Ethereum you
know that's a again pain in the ass for
developers. Um and with native account
abstraction you can like literally pay
network fees in any stable coins and um
batch and concurrent transactions and
then also schedule payments and you know
you can do modern authentication with
like pass keys that is a good one like
face ids and with your biometric. So
that is really huge. Uh
yes these are the few new features and
what else did I miss?
I think that is it, right, Andrew?
>> Sorry, I just got back. I'm asking the
team, someone from the team to send me
funds.
>> We're literally live debugging. Okay.
>> Yeah.
H the tip 20 rewards. Okay. Yeah, they
do have this DIP 20 rewards as well,
which is like built-in mechanism that
allows for distribution of rewards to
token holders. Oh, wow. Interesting.
Oh, I see. Staked in a separate
contract. Oh, wow. This is really
interesting. What did you find
>> the tip 20 rewards one? Right. So,
initially like right now you have to
like stake your contra stake your tokens
to like get rewards and stuff, but they
already have like this tip 20 rewards
thing which is like a built-in
mechanism. Um, that's interesting.
So, you don't have to stake any tokens.
Oh, yes. Yeah. Yeah. They have like auto
I guess auto rewards. Auto re It's not
rebate. I think it's just paying out. I
don't think it's actually increasing
supply, right? So, it's not like a
rebase.
>> No, no, no.
>> I think uh someone did that, too, right?
There was an L2. What was their name?
Blast. Native like native
>> Oh, yeah. They had native native yield.
Yeah. Yeah. Yeah.
>> Yeah.
>> Wow, that's a fun one. All right. I
think I'm going to download another
>> um wallet. I'm gonna download Phantom
just to generate a key for me to safely
export.
Uh,
create a new wallet. Create a seed
phrase.
Yes. Yes. Yes. All right.
>> Oh, nice. Yeah. So also by the way there
is no me on the temper blockchain which
is very interesting. I can create a
whole separate video and do a different
live stream on this but they're
architecture is designed in such a way
they have like this native VMM. So you
know there's no probabilistic ME.
>> Oh
>> there will be ME though there will be
ME.
>> There's there's there's always there's
always MV me.
>> Yeah
>> there's always MV.
>> All right. How do I manage accounts?
Developer settings. No. Uh experimental
features security.
>> I think we should do another session on
like a whiteboard session on the
architecture. I will try to invite
someone from tempo.
>> Yeah. Yeah. Yeah. Yeah. No, we
definitely should. Um
Oh my god.
Why is this?
>> You got it?
No,
I'm dealing with I'm dealing with crypto
UX right now.
>> Uh,
>> well, let me tell you, we don't have
much time. I mean, we were supposed to
end
>> minutes, so you got to hurry.
>> Yeah. Yeah, I'm I'm working. Let me see
if anyone
Oh, interesting. The the docs are really
interesting. So, you can actually launch
stable coin from their docs itself. So,
you can just sign in, create account.
Let's actually do that, you know. Let me
sign in. Uh check the prompt. Okay. It
is asking me to do it without iCloud
keychain. Okay.
I might have to create pass keys. I
don't have any.
Use phone or tablet.
Oh,
>> okay.
>> The team sent me some funds. All right.
>> Oh, nice. Okay.
>> Um, should I pass on the screen to you?
>> Yeah. Give me a second to now uninstall
Phantom.
All right. Remove Phantom.
Um
Oh, they minted me path USD. All right.
Uh yes. Yeah, you can can share my
screen again.
>> Yeah, you got to share your screen
first.
>> Okay. Okay.
Uh,
all right. So, they sent
my address. Oh, is it sharing?
>> Yes.
>> All right. They sent my address uh this
path USD. Um,
>> which is token 000. So, I'm just going
to update this vibe coded script in
here.
>> Okay. And once you do that, can you also
give us like a overview like what we are
trying to do here?
>> Yeah, essentially all we're trying to do
is actually send a tempo transaction.
Um, and what we want is ideally, well,
this is going to be with path USD. Um,
we want to send with two transfers in
calls. Um, and use path USDC USD as fee
token. Um because I want to I'm guessing
that fees have to be paid in AlphaUSD.
So if we pay with path USD, we should
see the fee AMM in action.
Um so I think it's trying to kill two
birds with one stone, which is literally
just like how do we see multicol and how
do we see path USD in an example
transaction? Because I think that going
through the explorer, there's no way
we're going to find that. I also gave
them the feedback of like, hey, on on
here for the faucet, you should really
just let people paste an address because
MetaMask does not support transferring
the token. Um, anyway,
>> so or close some of this.
>> So, all I told cursor here was to use VM
and to use the new transaction type. Um,
and you have to load the RPC private
address and private key into here, which
you can just generate by running bun bun
run generate wallet. Um, and
I have low faith that this will work
first try.
Token address value. Let's do value one.
um
call data hex.
>> Try it out.
>> This is literally encoding using the AI.
Um I'm assuming that we're 18 decimals.
So let's just
let's just
break.
>> Let's see.
>> All right.
RPC request failed. Failed to decode
sign transaction.
It failed.
>> Send params.
All right. There's a few ways around
this. One of these is
what happens if we just use ETH call. Do
you guys support calls yet in here?
>> Ah, this is still legacy. I think
>> if I look here, I can't input calls
here,
right? This is still the normal. This
assumes that the trans this new
transaction type doesn't exist yet.
>> Yesum.
>> Which makes sense because again this is
like when you have this new type there's
like thousands of interfaces that now
need to be updated to to support it. So
I can't use this to generate the
transaction. Um, they should actually,
it would be very nice if Tempo created
like a simple template transaction UI
that let you build a transaction, see
what the request was and send it, right?
Like imagine you had that like left side
is the template transaction, right side
is the um
the actual like code using VM because I
think they tweeted something about VM
now has tempo transaction support but
uh use tempo actions.
>> Let's see what are tempo actions. You
can use tempo where what is this VM
actions? You can also use tempo specific
actions. Oh, this is their own SDK that
they rolled up into VM because the the
the Weim or VM team is part of Ithaca,
which is now part of Tempo. Uh, shout
out to to Tom and Jake. So, it looks
like these are SDK things, but this is
all higher level. I'm like, where is my
low where's my [ __ ] submit
transaction,
guys? Come on. Tempo, where is it? Where
is it? Chains. Use tempo actions. That's
not what we want. Um, use VM actions.
Nope. All right. Can't find it there.
Um, cursor could not figure it out. I'll
say try to debug this and keep trying to
send the transaction until it works.
Um, it doesn't actually look like we're
specifying the fee token in here either.
Let me see. How do I if we go back to
the all the way back to the spec fee
token is optional here. So we should be
able to specify fee token.
>> Oh interesting. I mean
>> if it is optional then I mean if you
don't specify then what it is going what
it is going to use. It must default then
to um whatever the validator is
validator addresses but then it's like
>> I haven't looked enough at the validator
because I remember each validator can
specify what token they want fees in.
>> I see. I see. And then there is the
>> sorry I don't know if they're expecting
the wallets to be able to check and know
like oh this is what the current
validator's fee token is and set that as
it when it's sent or if it's Yeah.
Actually, I don't
I don't know cuz there has to be some
default.
>> There must be some default your wallet
uses when it sends the transaction and
this isn't specified. Um
>> yeah, exactly. Cuz I know if you choose
a token and if the validator doesn't
have that token, then using the native
PMM, it does the swap like based on what
the validator is using.
>> Yeah. Uh,
>> but it's like how does it like how does
it even figure out what it's running?
All right. Um,
>> valid question. I'm taking the notes.
>> It's also using I also realized I was
using ETH call earlier not
um ETH sign transaction.
So maybe this is actually
Nope, I lied. Uh sign transaction.
All right, I think we have to actually
read this access list
encode transaction payload. Let me just
see say
uh see if you can just sign this the
normal VM way, not with the tempo
specific stuff.
So I I think the error is partially
coming from
how this is being signed or it thinks
that it has to sign it a different way.
>> Create tempo transaction hash.
Oh wait no we were already using the
right signing, weren't we? Signature
accounts sign.
All right. Um this is kind of classic.
It's too wordy. So, I'm going to say,
hey, function and do it in line.
Um,
it looks like it's trying to do a bunch
of other stuff as well.
All right. This might be one where we
need their help, but it's failing
because it's failing to decode from the
RPC, which means somewhere along the
line, I'm guessing in this create tempo
payload,
I think it's trying to do way too much
because we have this new transaction
type
and it's trying to create and pass all
these new things.
I also see is it any um
okay
this is something we're going to have to
do another session. I'm going to have to
ask their team about this. Uh but one
thing I do want to just see before we go
is we do have it's not a multicol but
this one does have a single call and I
am curious how the traces look. Um, just
going to close a bunch of these other
tabs for now.
Um, so if I go debug trace transaction,
this is how you get stuff like uh and
I'll show off herd for a second. Um,
when you do like call deploy token on
clanker, there's all these traces for
everything that happens after it's
deployed or after this first call
happens because contracts call other
contracts. This is not exposed on their
explorer. There's just events. Oh,
actually, no. They do have a trace. I
lied. Um,
it looks like it's call.
Wait, sorry. Is this the one I was
looking at before? No, this is minting.
I want to see
the crate token. This is call's trace.
Why is Why is call coming from the null
address? That is worrying me.
Let's see what happens if I put in this
transaction hash. I'm looking um
I'm looking at the decoded trace of this
crate token and it looks like the first
call is to the null address before it
calls the tip factory.
So, I'm guessing that
>> this is somewhat similar to 7702 where
you call your own address in 7702.
Technically, if you look at the trace,
you're calling your own address and then
that does a delegate call, I believe, to
everything else,
>> but it looks like for them it's doing a
call to the zero address. Anyways, we
can verify this by going to this debug
tra transaction
and I see it's failed. Why is it failed?
Failed. True. Okay. Very very helpful.
Uh
any any ideas here?
Let's see. I did copy the right
transaction, right? Yeah.
Like this. If I do this, this works,
right?
Yeah. So, I can get this. But if I go to
debug trace transaction with the same
thing,
it's failed. I'm guessing maybe that's
just not
supported yet. Maybe we can replay the
transaction. Maybe this works. Oh, okay.
All right. So, replaying works. Debug
trace does not work yet. Um, again, this
is a classic like it's hard to support
all the RPCs. Um,
those are both pretty popular tracing
endpoints. Um, so for anyone who's
curious, it's now good to know that
>> that doesn't work. Um, so I can see
>> what endpoint was it again?
>> Debug debug trace transaction.
>> Debug trace. Yeah, I'm going to check
like I'm taking notes by the way
everyone. I'm just going to drop the
notes of con like what worked, what
didn't because we actually here to like
test.
>> So the first call in the trace.
>> Oh, this actually looks different. VM
trace null. Oh, that's bec. Oh god, I
hate this. Um,
debug trace returns this trace object
that's like your trace, your calls, and
then within each calls the traces. I
think replay transaction. Yeah, it
already basically unnests it. So you
have trace address where each depth is a
child call. So yeah, it is calling to
two with zero gas its own call type. The
from is zero as well. Oh, the from isn't
even the wallet. Um I would have
expected that the from here was the
wallet address. Um but it's not
>> interesting.
>> Which now makes it harder.
>> But what exactly is happening here? Like
why is this called from zero address to
zero address? It's a it's a good that's
a good question. So what happened here
is I'm calling it from my E7 FFF, right?
Um and typically for traces um like if I
go to this this trace on herd, it's the
this caller this from calling this
contract. And so when this contract is
called, it can only call one other thing
at a time, right? Um versus when I have
many calls like an execute technically
>> like
there becomes like multiple top level
traces. There become multiple trace
zeros u which breaks the model of how
traces work in um
in Ethereum because Ethereum has always
assumed you call a contract any other
calls are a child of that first call.
You see trace address here is zero
right? So like if I if I shrink this to
call depth one,
>> you can see there's a zero trace here.
Um and then everything else is like 001
02 03 04. These are all child traces.
>> You can't have multiple zero traces. Um
where like it's like hey yeah this
wallet called five contracts um that
kind of breaks
>> all of the data engineering. Um
>> and so to get around that they've added
uh this zero this null call um at the
empty trace which basically makes it so
anyone who's done doing typical data
engineering is going to be like oh the
null address is now calling this address
right because logically the way traces
work today it's if there's a child trace
this is being called by this uh which is
incorrect. So anyone who's building on
top of tempo has to ignore
and not ignore but has to kind of switch
around
how they're showing this. Um
>> interesting.
So what does this breaks? Like if there
are any dashboards right now are they
going to break?
>> Yeah. So anything that's like tracking
like who who's actually calling this
contract? Um
>> it depends on how they're joining and
representing the data. U but this this
from being correct is is good. Uh so I
think for the most part we'll be able to
just ignore this. This just kind of
breaks um anyone who's using this first
trace as like what was the contract
called? Um this is now technically wrong
where it's like oh it's you're you're
going to show that the zero address was
called. um which like this technically
does not match what's in here where the
first call is to here, right? So it's
kind of two changes. One is like that
two input value is now gone because it's
nested within calls and then that first
call doesn't actually match this first
two here, right? So you have to have now
this custom mapping of like oh uh if I'm
joining traces on transactions per se I
have to join on the second subtrace
so that like if there were more multiple
calls there'd be like trace address zero
trace address one trace address two um I
would have to join that to calls one
calls two calls three and ignore this
top level call here um So
it's a slight change. It's it's hard to
say exactly what it breaks per se. Um
but both of these are well this is a
very big change because this change is
like anyone who is decoding transactions
before and assume that each transaction
makes only one call. Uh now that breaks
because you have to unnst this array
basically which was like a big Salana
problem which is unnsting as soon as you
have to unnst or basically expand an
array to flatten it. Uh that makes every
single SQL query
10 times more expensive. Um so that's
going to be a big impact on teams like
Dune Alium etc. U because if you keep it
as a single single row of calls when you
join it then you have to unnst this. All
right. And unsting with a join is also
expensive. U and yeah, for anyone
working with traces data, this just
makes things a little more complex. Um I
don't know. Do do you know if Tenderly
supports
um tempo test net yet? I don't think it
does.
>> I don't think so. No, I thought it
>> Yeah, it'd be interesting to see.
No, I don't think they support it. No,
they don't. No,
>> it would be interesting to see it. Um,
but yeah, this would be a better example
if I could send this transaction that
had the multiple calls in it and we
could also see the fee being swapped
because I'm also very curious of like
for that fee swap is that bundled into
calls or does that actually happen
outside of calls? Right? U because at
some point if you're swapping it has to
call that contract, right? So then it's
like what happens if
>> like the fee swap
does not actually show up in calls but
it shows up in traces, right? And now
it's like oh who's actually calling a
swap contract? Well, you can't get it
from here. You have to get it from here,
right? Um, and so yeah, there's a lot of
nuances here about like standardizing
across the transactions RPC, the traces
RPC. Um, and especially once you
introduce pre-ompiles, um, then like
technically you can't trace within the
pre-ompile. So like if for example, EMM
was doing a multihop or like or the path
decks or the stable decks was doing like
a multihop swap, you might not be able
to see which paths it's routing through,
right? And that's important data for
people. Um,
but you can't see it if it's in a
pre-ompile, but they're saying that it's
in um
actual contracts and not pre-ompiles.
So, that's also something we'll have to
look into more. But, a lot to dive into.
You know, this is just this is classic
kind of like the dev X for anytime um
you know, anyone's trying to learn how
to build on a new chain, especially when
so many things change. So, you know,
>> this is it's never it's never it's never
pretty. Yeah, it's never pretty, but
this is always good for people to start
getting familiar with like ah these are
some of the changes, these are some of
the integrations like MetaMask not being
able to transfer or find that token, you
know, uh things that need to be
>> Why was that happening again? Why was
MetaMask not able to transfer the
>> I don't know it because it requires me
to add like search the asset before I
can choose to send it. Um and it just
couldn't find that asset. Um so then it
just didn't let me send it, right? I
would expect I mean I guess for safety
reasons they don't let you just paste
any address in there but it's like they
should be able to be like hey you've
pasted an address check if it has like
the typical ERC20 like functions on it
and let you transfer. Um I don't know
it's very weird that the wallet could
not detect the token. Um but anyways
yeah stuff like that stuff like the
faucet should be allow you to paste an
address. stuff like the fact that cursor
can't just oneshot um sending of uh uh
this new transaction type with VM
because the actions are abstracted with
tempo actions, but I need I need support
on the the send calls. Um so, you know,
a lot of little things. I'm sure the
Tempo team will hopefully go through
this at 3x speed and and make some
improvements, but um yeah, we
>> I'm probably taking notes. Like I'm
probably taking notes. I'm going to tag
the tempo team on Twitter that hey, this
is the
>> Yeah, these are things we ran into.
Yeah.
>> So, the feedback is Metamas token. It
didn't direct the didn't like
>> going through Yeah. going through the
faucet and stuff is like the connected
wallets maybe don't all support
transferring the token, so you should
let them paste.
>> Yes. Paste the wallet. And then another
one was of course cursor wasn't able to
do a tempo transaction in one shot. Is
that is that correct?
>> Yeah.
>> Um and then another one was of course
the tempo transaction UI. So like we
would love something like you know you
can see we can send request and you know
left side there's tempo transaction and
then kind of like a sandbox.
>> Yeah.
>> Yeah. And few sorry
>> oh no I just realized the tempo docs do
let you fund another wallet like by
pasting. It's just hidden at the bottom
of the screen.
>> Jeez.
>> So in the So here I was looking where is
it? I was looking at this faucet and I
had to scroll down to here
>> and they're sending of funds to another
address. U
>> Oh man, we wasted like 15 minutes.
>> Yeah. Yeah. Yeah. Yeah. Yeah. But like
classic doc stuff. If you don't put it
up front, no one's going to [ __ ]
scroll to it. So
>> Well, fair. Okay. That's sad.
>> Yeah.
out. Okay. And then uh another one was
the swap. So when you did the
transaction, you weren't able to see the
swap transaction, right?
>> When I when I was looking at the the RPC
data for or what what I was talking
about?
>> Yes. For the RPC data when you were
looking
to
>> Yeah. I mean, there wasn't I think the
ones that that the transactions we were
looking at were all paid with AlphaUSD,
so there wasn't a swap in there. I don't
know. I haven't we we'd have to test out
I think ourselves putting a different
fee token to see if it see how the swap
works but we couldn't get that far
because we couldn't figure out how to
actually encode the transaction
correctly. Uh
>> okay
>> that's fair.
>> Yeah
>> I think it was it was a good shot. Um
and also the cursor couldn't do it in
one shot is like a great feedback
because of course like the docs who goes
Yeah. Exactly. Yeah.
>> Um and then yeah RPC wise the replay
trans the debug trace transaction didn't
work even though replay did. Um so
that's just
>> did right. Replay worked.
>> Replay did. Yes. Um but a lot of teams I
think still use debug
>> trace. We do as we do as well actually.
Um
>> yeah, I will have to check with the team
if the debug trace method is supported
or not.
>> Yeah. Yeah. Yeah. Um
>> okay. Yeah. I think that is it. We
covered almost everything and we do have
a question regarding the default fee
like if we don't set up maybe we can try
on our own or we can just ask the team
>> for what?
>> For the default fee. So for example, if
you are not putting anything
>> what how does it figure out what to pay
with? Yeah. I don't know.
>> Yes. Yes.
>> Um and then
we can add this in later of um I'll send
this to you. I I just published the
repo. Obviously it doesn't work yet.
We're getting help, but we'll we'll make
it work. Um I put in the chat. It's just
tempo test
on my on my GitHub. So, uh, as we fix
it, hopefully people can refer to it and
test with it.
>> Yep. We should do, I think, another one
and like part two.
>> Yeah, we'll do a part two. We'll get
we'll get more of the tempo team's
actual support and then um yeah,
hopefully get one of them to join us
next time so that we're not in the dark
as much.
>> Oh, nice. Okay, almost like 900 people
now. Actually, 850 people are watching,
which is massive. I wasn't expecting.
>> Yeah. I mean, I think everyone's very
excited about it, but also very like,
you know, I want to say worried, but
it's it's it's hard it's hard to learn
these new things, especially when you're
used to your scripts and tools and apps
working a certain way. Um, it's it's
very easy for devs uh and users to churn
when it's suddenly like, oh, I just
don't understand this or I can't get it
to work. Um, so you know, Utam and I
will keep trying to do the leg work to
>> to make the stuff easier and I'm sure
that you know they will have their own
Tempo should have their own devs as
well. Uh, so
>> actually they don't. Yeah
to like join us in the next stream or
probably Georgius. Let's see if I can
get them on board. But okay, I think uh
we are at the end of our stream. So
thank you for joining. Hope this was
helpful and we might do another part two
uh during I don't know holiday. So if
you're logged in we are also logged in
and we are probably coming to you again
and if you're building anything on tempo
alme go to elme.com we have support for
tempo you can start building there if
you need any help you can ping me and
also check out Andrew's profile and also
check out herd which is a really great
tool.
>> Great.
No, that's that that's it. This was this
was this was fun. Thank you, Tom. Thanks
everyone for watching.
>> Thank you everyone. Bye. Take care.
🚨 Testing Tempo: The Stripe’s New EVM L1 Join us for a live, hands-on stream where we put Tempo, Stripe’s new EVM-compatible Layer 1, to the test & explore the chain features. Tempo introduces a new design space for onchain payments, with features like the TIP-20 token standard, native account abstraction, stablecoin-denominated gas fees, fee AMMs, payment lanes, and dedicated blockspace for payments. In this session, we won’t just talk about the architecture - we’ll actively try to break it. Live on stream, we’ll deploy and mint tokens, bundle transactions, stress payment flows, and explore what works, what feels different from existing EVM chains, and where things might crack under real usage. Expect real deployments, real edge cases, and honest takes on how Tempo compares to today’s Ethereum and L2 ecosystem. The session is co-hosted with Andrew, co-founder of Herd Echo, former Dune employee, and a well-known technical educator in crypto. Together, we’ll dig into Tempo from a builder’s perspective and explore what this new payments-first L1 unlocks and what it still needs to prove. If you’re a web3 developer, infra engineer, or curious about the future of onchain payments, this one’s for you. Date & Time: Thursday • 7:30 AM PST • 10:30 AM EST