嘿宝贝,我想我想和你结婚(在区块链上)💒
嘿宝贝,我想我想和你结婚(在区块链上)💒
原文:https://medium.com/hackernoon/hey-baby-i-think-i-wanna-marry-you-on-the-blockchain-3227ba3bdfe

Photo by One Wedding on Unsplash
婚姻的概念已经存在了几万年,但是仅仅几百年前,他们才开始涉及实际的合同,甚至是一个仪式。事实上,尽管《圣经》中有很多结婚的人,但根据这篇文章:中没有关于 仪式的描述
我在圣经中唯一能找到的“仪式”是 Tobit 7:12-14,在这个仪式中,父亲将女儿的手放在丈夫的手中,然后写下一份契约。 […] 没有誓言,没有牧师,没有仪式,没有祈祷,没有宣告,没有执照,没有登记。
当然,这在过去的几百年里已经改变了。今天,婚姻要被认为是合法的,就必须得到国家的承认。每种文化、宗教、国家和州也有自己的规则来确定什么构成有效的婚姻。例如,有些地方允许同性婚姻,有些地方不允许,童婚和近亲结婚在一些国家或文化中是允许的,有些国家允许男人娶一个以上的女人,等等。
如何举行仪式也因地而异。例如,一些州和国家要求在婚礼上有见证人在场。根据我在网上找到的信息,他们大多被要求确保配偶双方都不是被迫参加婚礼的。今天,他们被选为亲密的朋友或亲戚,这对夫妇想与他们分享这个特殊的时刻。
在区块链上结婚
在这篇文章中,我打算探讨一份婚姻契约在区块链上看起来会是什么样子。对于这份特殊的合同,我已经取消了对见证人的需求,并尽可能简化结婚过程,但不排除有几个机构或登记处定义他们自己的主持婚姻规则的可能性。
婚姻程序的结构如下: 婚姻登记处记录了所有的求婚和正式结婚。如果有人想与他人结婚,他们所要做的就是向登记处发出请求,登记处将核实配偶双方实际上可以结婚。
在这个登记处的范围内,能够结婚仅仅意味着,确保每个人都还没有和别人结婚。正如我之前提到的,可能会有其他登记处有不同的规则,婚姻规则因地而异。例如,婚姻登记处可能要求夫妻双方都超过 18 岁;或者两人来自同一个国家,甚至允许一个人与不止一个人结婚。

Or even allow people to marry their cousins.
另一个组成部分是婚姻契约,它包含婚姻的信息,例如配偶的地址;婚姻状况;举行仪式的日期,也是配偶之间互动的主要接触点,如接受对方的求婚或申请离婚。
还值得一提的是,MarriageRegistry 包含一些功能,允许外部方从它那里获得关于一个人的信息。任何人都可以向注册表查询以下信息:
- 给定任何配偶,任何人都可以取回将他们联系在一起的婚姻契约。
- 给定一个结婚合同地址,任何人都可以得到包含夫妻双方地址和结婚日期的“结婚证”。
- 给定其中一个配偶,任何人都可以找出他们与谁结婚。
- 给定两个配偶,任何人都可以查出他们是否结婚。
- 给定配偶中的一方,任何人都可以知道这个人是否结婚了。
这些功能主要由关心一个人是已婚还是单身的其他实体使用,用于他们自己的过程和程序。例如,一家银行可以查询该注册中心,以获取一对申请联合抵押贷款的夫妇的婚姻状况信息。
如何使用合同:
MarriageRegistry 契约已经部署在 Ropsten testnet 中,并通过 Etherscan 进行了验证,地址:0x 57f 38682 C5 e 802 f 78 CCC 71 B2 d 2932230 B1 c 41 c 47 您可以在我的 Github 资源库中找到所涉及的两个契约(Marriage.sol 和 MarriageRegistry.sol)的源代码。
你可以用它们和这样的人结婚:
1- 💍向某人求婚:婚姻契约只能由 MarriageRegistry 契约生成,因此,如果您想向某人求婚,您所要做的就是在 MarriageRegistry 上调用 proposeMarriage() 函数,并指定您要向其求婚的人的地址。
2- 🌹让你的另一半接受或拒绝求婚:被求婚者现在可以选择拒绝或接受求婚。如果他们通过在新创建的婚姻契约上调用 rejectProposal() 来拒绝求婚,那么婚姻就被取消,契约也被销毁。另一方面,如果他们叫 acceptProposal() 那就是正式的,你们结婚了!当你调用 proposeMarriage()时,它会生成一个新的婚姻契约,将你和求婚者捆绑在一起。你必须与他人分享合同的地址,以便他们按照合同行事。您可以在 Etherscan.com 上找到它,或者通过将任一地址作为参数传递来调用 MarriageRegistry 上的 getMarriageContract()。
3- 📙领取结婚证:您(或任何人)可以查询婚姻登记处,领取注明夫妻双方地址和结婚日期的结婚证。要获得结婚证书,只需调用getmarriage certificate()并将结婚契约地址作为参数传递。
4-💔离婚:有时婚姻生活并不像我们想象的那样,夫妻双方觉得离婚是最好的选择。对于这种情况,我们有request divideo()函数。与求婚一样,夫妻双方必须就此达成一致才能离婚。一旦双方调用这个函数,契约就会被破坏,他们就可以自由地和别人结婚了。(或者保持单身🎊)
从这里去哪里?
首先,如果你用这些合同结婚了,恭喜你! 不过,祝你好运,有了这个登记处颁发的证书,你可以休假几天。😞
当你度蜜月回来时🏖,我们可以讨论一些可以对这些合同进行的改进,例如:
- 尽管我提到了扩展婚姻登记处和创建具有不同规则集的其他登记处的可能性,但这种方法有一个问题。如果有几个登记处,目前没有一个中央登记处记录这些登记处之间的婚姻。因此,如果我在登记处 A 结婚,登记处 B 不会知道,如果我愿意,我也可以在登记处 B 结婚。一个解决方案可以是建立一个中央注册中心(注册中心的注册中心),它跟踪所有注册中心,为注册中心提供一种互相询问信息的方式。
- 当前的实现接受离婚,因此,如果配偶双方同意,他们通过取消婚姻契约(调用自毁)立即离婚,并且在 MarriageRegistry 中触发一个事件来记录离婚。要离婚,双方必须同意,但这并不总是发生。现在我们不考虑一方要求离婚,但另一方拒绝签字的情况。在这些情况下应该怎么做?此外,我并没有考虑,例如,配偶之一的死亡。如果其中一方去世或丧失行为能力,离婚是不可能的,因为这需要双方同意。
- 任何人都可以查询注册表以获得任何给定人员的婚姻状况(只要他们知道自己的地址或婚姻合同的地址),只要这些信息被善意地使用,这是很好的,但这也为有人利用这些信息损害配偶一方或双方提供了可能性。我们也许应该限制对这些信息的访问,只有在配偶一方授权的情况下才可以使用。
- 你可以嫁给一辆智能汽车,一个象征性的众包,一个 multisig 钱包或任何类似的东西。 该合同不执行任何检查来确保任何一方是外部拥有的帐户。因此,可以提供另一个契约作为参数,如果该契约实现了必要的函数来接受求婚,那么就有了婚姻。 事实上,一对已婚夫妇可以与另一对已婚夫妇结婚,如果他们愿意的话(并签订了这样的合同)。👫 👫https://www.youtube.com/watch?v=t_jHrUE5IOk