Blockchain 简单的坚固性误解-它如何/在哪里利用区块链?

Blockchain 简单的坚固性误解-它如何/在哪里利用区块链?,blockchain,ethereum,solidity,Blockchain,Ethereum,Solidity,我对区块链有一个相当“新”的理解,我对区块链如何保存数据有一个相对较好的把握 我还对solidity语法有一定的理解——对于已经熟悉OOP原理的人来说,这很容易理解 我没有理解的是solidity是如何利用以太坊的区块链技术的 问题 Solidity在我看来像是一种面向对象的编程语言,它在什么时候将数据持久化到区块链 如果示例看起来像类,那么什么表示“块”——这些类的每个实例都是“块”吗 背景: 我要举的稳固性示例:区块链中的区块是有关交易信息的分类账。因此,当我们存储数据时,它被写为块中的事务

我对区块链有一个相当“新”的理解,我对区块链如何保存数据有一个相对较好的把握

我还对solidity语法有一定的理解——对于已经熟悉OOP原理的人来说,这很容易理解

我没有理解的是solidity是如何利用以太坊的区块链技术的

问题 Solidity在我看来像是一种面向对象的编程语言,它在什么时候将数据持久化到区块链

如果示例看起来像类,那么什么表示“块”——这些类的每个实例都是“块”吗

背景:
我要举的稳固性示例:

区块链中的区块是有关交易信息的分类账。因此,当我们存储数据时,它被写为块中的事务

编译后编写实体代码时,将创建abi文件和字节码。在区块链中,我们存储字节码文件,而不是实体码。而ABI文件在Web3库的帮助下用于与智能合约交互。solidity代码可以作为良好的编程实践添加,但不是必需的

部署smartcontract后,您将获得访问要与之交互的smartcontract的地址

现在,无论何时只要更新一个变量的值,它将被视为事务,事务将被存储在下一个块中。 我希望你现在明白了

感谢smarx和jfc的更正:)

它在什么时候将数据持久化到区块链

智能合约具有控制数据更改方式的规则(功能)。无论何时发出函数调用,都会生成事务。此事务是更改(或不更改)您的SC数据的操作

如果示例看起来像类,那么什么表示“块”——这些类的每个实例都是“块”吗

事务打包在块中,一个块可以有多个事务在不同的SCs或ETH帐户(钱包)中运行。SCs和块之间的关系与任何应用程序的代码与数据库软件工作方式之间的关系相同。。。基本上没有关系

这就是:块是区块链存储数据的方式。SC是说明数据如何变化的规则

每个区块是否都是属于合同的所有财产的“版本”

没有。块是一组事务。事务是更改数据的操作

每个区块都有一个智能合约实例

没有。只有当您将智能合约部署到网络时,您才能在进入块的特殊事务中发送已编译SC的字节码的完整副本。即使在这种情况下,块内也可能有更多不同的事务

智能合约几乎就像一个API,它获取和设置区块链中的数据

就这样

智能合约本质上等同于我可能选择自己编写的中间件吗


但说到以太坊,目前别无选择:只有稳定代码(还有几种语言,但我认为它们很少使用)。

非常感谢您的回复,这很有帮助。具体来说,我的问题是关于
每当你更新变量的值时,它都会考虑
。那么,每个区块是否都是属于合同的所有财产的“版本”?i、 e.一旦合同中的一个(许多可能的)属性发生变化-它被保存到区块链中?该区块不会专用于特定smartcontract的交易。一个区块具有发送以太坊等事务以及来自不同智能合约的不同事务。事务是指将信息存储在块中。因此,只有当您将数据存储在区块链中时,交易才会发生。我认为误导我的是,我已经读到每个区块都有一个智能合约的实例。那么,智能合约似乎就像一个API,它获取和设置区块链中的数据?那么,智能合约本质上等同于我可以选择自己编写的中间件,它可以手动将数据持久化到块链上吗?再次感谢您的回复,非常感谢Smart Contract采用交易规则,并将其作为法律在代码中实现。假设如果你想实施关于出租公寓的智能合同,你在执行交易前会有一些基本规则,因此你将这些规则写在一个代码中,然后智能合同将该代码作为法律,在满足要求的情况下实施交易。虽然这个答案的精神在很大程度上是正确的,请注意,许多细节都是错误的。例如,合同的ABI根本不存储在区块链中。编译智能合约会产生(除其他外)字节码。部署智能合约涉及在事务中发送该字节码。执行该“初始字节码”,如果执行成功,则返回“运行时字节码”,然后在区块链中将其与合同地址关联。该代码是将来事务发送到该地址时执行的代码。